应用程序在运行
ng serve
和 ng build
时运行良好。但是当我运行ng test
时,它会抛出以下错误:
node:fs/promises - Error: Module build failed: UnhandledSchemeError: Reading from "node:fs/promises" is not handled by plugins (Unhandled scheme).
Webpack supports "data:" and "file:" URIs by default.
You may need an additional plugin to handle "node:" URIs.
node:fs - Error: Module build failed: UnhandledSchemeError: Reading from "node:fs" is not handled by plugins (Unhandled scheme).
Webpack supports "data:" and "file:" URIs by default.
You may need an additional plugin to handle "node:" URIs.
node:path - Error: Module build failed: UnhandledSchemeError: Reading from "node:path" is not handled by plugins (Unhandled scheme).
Webpack supports "data:" and "file:" URIs by default.
You may need an additional plugin to handle "node:" URIs.
node:url - Error: Module build failed: UnhandledSchemeError: Reading from "node:url" is not handled by plugins (Unhandled scheme).
Webpack supports "data:" and "file:" URIs by default.
You may need an additional plugin to handle "node:" URIs.
我问过GPT并在网上搜索过。这是我检查过的:
“删除‘node:’并只使用‘fs’、‘path’等。”
那些“node:xxx”甚至不存在于我的代码库中。所以这行不通。我确实在我的几个依赖项中找到了它们,但我无法修改它们。
“修改你的 webpack.conf.js”
我使用的是 Angular 17,所以我什至没有 webpack.conf.js。然而,当我创建一个应用程序并在那里进行一些修改时,该应用程序本身就崩溃了。
“检查您的 webpack 版本,可能存在版本不一致。”
查了一下,只有一个版本:5.9.4。
围绕此提出的大多数问题都在其
ng serve
或 ng build
中存在问题,因此他们的某些解决方案对我不起作用。如果这很重要的话,我正在使用 Karma 进行自动测试。
我在使用 next.js 时遇到了同样的问题,将此 webpack 配置添加到您的下一个配置文件中,在我的情况下它有效,如果您正在使用任何其他 webpack 相关配置,请尝试采用:
webpack: (config, { webpack }) => {
config.experiments = { ...config.experiments, topLevelAwait: true };
config.externals["node:fs"] = "commonjs node:fs";
config.resolve.fallback = {
...config.resolve.fallback,
fs: false,
};
config.plugins.push(
new webpack.NormalModuleReplacementPlugin(
/^node:/,
(resource) => {
resource.request = resource.request.replace(/^node:/, '');
},
),
);
return config;
}
它支持顶级等待等现代功能,外部化 fs 等 Node.js 模块,并通过删除 node: 前缀来调整模块导入以实现兼容性。