我正在开发 Next.js 项目(版本 14.2.6)并遇到与 @node-rs/argon2 包相关的问题。构建过程失败,并出现 Node:crypto 模块的 UnhandledSchemeError。错误详情如下: 模块构建失败:UnhandledSchemeError:插件不处理从“node:crypto”读取(未处理的方案)。
Webpack 默认支持“data:”和“file:”URI。
您可能需要额外的插件来处理“node:”URI。
导入请求模块的跟踪:
node:crypto
./node_modules/argon2/argon2.cjs
./auth.ts
这是我运行 npm run dev 时在终端中看到的内容:
⨯ node:crypto
Module build failed: UnhandledSchemeError: Reading from "node:crypto" 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.
Import trace for requested module:
node:crypto
./node_modules/argon2/argon2.cjs
./auth.ts
...
⚠ Fast Refresh had to perform a full reload due to a runtime error.
GET / 500 in 48ms
GET /users 404 in 2ms
Additional Context:
Next.js Version: 14.2.6
NextAuth.js Version: 5
Argon2 Package: argon2
Node.js Version: 18.x.x
Operating System: Kali Linux
Environment Variables: Loaded via .env
Custom Webpack Configuration: None (using the default provided by Next.js)
问题:
使用 argon2 包时如何配置 Webpack 或 Next.js 来正确处理 node:crypto 模块?是否需要特定的插件或解决方法来解决此 UnhandledSchemeError?
任何帮助或指导将不胜感激!
我尝试过的:
我已经验证该问题与node:crypto模块有关,该模块由argon2包内部使用。
我尝试搜索允许 Webpack 处理节点:URI 的插件或配置,但未能找到解决方案。
问题仍然存在,快速刷新会触发完全重新加载和运行时错误,导致开发期间出现 500 和 404 响应。
这对我有用(下一个 v14.2.7)
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
serverComponentsExternalPackages: ["@node-rs/argon2"],
},
};
export default nextConfig;