下面粘贴的是我在 nextjs 中使用指向本地路由的链接时收到的节点:缓冲区错误。有谁知道如何解决这个问题?
我看到了:https ://github.com/vercel/next.js/discussions/33982
谢谢!
节点:缓冲区模块构建失败:UnhandledSchemeError:插件不处理从“节点:缓冲区”读取(未处理方案)。Webpack 默认支持 "data:" 和 "file:" URI。您可能需要一个额外的插件来处理“node:”URI。
所以我也遇到了这个问题 - 上面的讨论将您链接到文件类型,这实际上是我最终找到答案的地方。
首先,我现在使用 react-app-rewired - 这允许我在不弹出项目的情况下更改 webpack 配置。这是安装的第一件事。还有其他软件包也可以做到这一点,有些人担心这个重新布线的软件包只是由社区“轻微”维护。
然后,您需要在项目的根目录中创建一个名为“config-overrides.js”的文件
这就是我文件中的内容。它涵盖了 node:buffer 以外的一些东西,因为我还需要其他东西(比如 fs 和流)。我相信您可以根据需要对其进行修改:
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;
};
您需要确保安装了您在该文件中使用的软件包,例如
npm install url graceful-fs buffer stream-browserify --save
之后,我将 package.json 中的“脚本”区域更改为如下:
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"eject": "react-scripts eject"
}
然后我的包正确编译并运行良好。