You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

argon2与node-pre-gyp报错:无法解析'fs',该降级至哪个Node版本?

解决Argon2在Next.js中无法解析'fs'模块的问题

问题本质

你遇到的错误是因为Next.js的Edge Runtime(比如middleware.ts所在环境)不支持Node.js核心模块fs,而argon2依赖的@mapbox/node-pre-gyp在Node 18.16.0 + argon2@0.30.3的组合下,会在非Node环境中触发这个模块解析失败的问题。

降级Node的推荐版本

如果只能通过降级Node解决,推荐降级到Node 16.x系列的最新LTS版本(如16.20.2)。这个版本与argon2@0.30.3的兼容性经过验证,能避免该fs模块解析错误。

更优的替代方案(无需降级Node)

其实不需要强制降级Node,你可以通过两种方式解决:

  • 调整代码执行环境:将argon2的调用逻辑移到Next.js的API路由或服务器组件中,不要在middleware或客户端组件里直接引入——因为middleware运行在Edge Runtime,不支持Node核心模块。
  • Webpack配置外部化:在next.config.js中添加配置,让Webpack不处理argon2的依赖:
module.exports = {
  webpack: (config) => {
    config.externals.push('argon2');
    return config;
  },
};

补充说明

Node 18.x作为LTS版本出现这个问题,是因为argon2@0.30.3对Node 18的适配在Edge Runtime场景下存在遗漏,并非Node 18本身的问题。

内容的提问来源于stack exchange,提问作者wongx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:29:59