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)
然后我的包编译正确并且运行良好。
| 归档时间: |
|
| 查看次数: |
27987 次 |
| 最近记录: |