UnhandledSchemeError:这个节点:缓冲区错误是什么以及如何解决它?

421*_*421 12 node.js webpack next.js vercel next-link

下面粘贴的是我在 nextjs 中使用本地路由链接时收到的节点:缓冲区错误。有人知道如何解决这个问题吗?

我看到: https: //github.com/vercel/next.js/discussions/33982

谢谢!

节点:缓冲区模块构建失败:UnhandledSchemeError:插件不处理从“节点:缓冲区”读取(未处理方案)。Webpack 默认支持“data:”和“file:”URI。您可能需要一个额外的插件来处理“node:”URI。

小智 15

所以我也遇到了这个问题 - 上面的讨论将您链接到文件类型,这实际上是我最终找到答案的地方。

首先,我现在正在使用react-app-rewired - 这允许我更改 webpack 配置而无需弹出您的项目。这是首先要安装的东西。还有其他软件包也可以执行此操作,有些人担心这个重新连线的软件包仅由社区“轻度”维护。

然后,您需要在项目的根目录中创建一个名为“config-overrides.js”的文件

这就是我的文件中的内容。它涵盖了除node:buffer之外的一些东西,因为我还需要其他东西(比如fs和stream)。我确信您可以根据需要修改它:

const webpack = require("webpack");

module.exports = function override(config, env) {
    config.resolve.fallback = {
        url: require.resolve("url"),
        fs: require.resolve("graceful-fs"),
        buffer: require.resolve("buffer"),
        stream: require.resolve("stream-browserify"),
    };
    config.plugins.push(
        new webpack.ProvidePlugin({
            process: "process/browser",
            Buffer: ["buffer", "Buffer"],
        }),
        new webpack.NormalModuleReplacementPlugin(/node:/, (resource) => {
            const mod = resource.request.replace(/^node:/, "");
            switch (mod) {
                case "buffer":
                    resource.request = "buffer";
                    break;
                case "stream":
                    resource.request = "readable-stream";
                    break;
                default:
                    throw new Error(`Not found ${mod}`);
            }
        }),
    );
    config.ignoreWarnings = [/Failed to parse source map/];

    return config;
};
Run Code Online (Sandbox Code Playgroud)

您需要确保安装了该文件中使用的软件包,例如

npm install url graceful-fs buffer stream-browserify --save

之后,我将 package.json 中的“scripts”区域更改为如下:

"scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "eject": "react-scripts eject"
}
Run Code Online (Sandbox Code Playgroud)

然后我的包编译正确并且运行良好。

  • 我欠你一个啤酒好人。这也适用于我的 vue 项目,并且是一个救星。使 Webpack 可以使用 npm lib“文件类型”。 (4认同)