Node 12.18环境下npm run build报错Cannot find module 'node:fs'求助
解决方案
问题根源
node:fs 这种带前缀的模块导入语法是 Node.js v14.18.0 及以上版本才支持的特性,你的 Node.js v12.18 并不兼容该写法。报错栈指向 rc9 包,说明远程服务器上安装的 rc9 版本过高,引入了这个不兼容语法;而本地因为 package-lock.json 锁文件的存在,安装的是适配 Node.js 12 的旧版本 rc9,所以能正常运行。
修复步骤
1. 确认本地兼容的 rc9 版本
在本地环境执行以下命令,查看当前使用的 rc9 具体版本:
npm ls rc9
输出类似 rc9@2.1.1,记下这个版本号。
2. 强制锁定 rc9 版本(适配 npm 6)
由于 npm 6 不支持内置的依赖版本覆盖功能,需要借助 npm-force-resolutions 工具实现版本锁定:
- 安装工具作为开发依赖:
npm install --save-dev npm-force-resolutions - 在
package.json中添加以下配置(替换版本号为你本地查到的兼容版本):"resolutions": { "rc9": "2.1.1" }, "scripts": { "preinstall": "npm-force-resolutions" } - 删除现有依赖和锁文件,重新安装依赖:
rm -rf node_modules package-lock.json npm install
3. 部署时携带锁文件
远程服务器部署时,务必将本地的 package-lock.json 一并上传,避免 npm 自动安装最新版本的依赖,再次触发兼容性问题。
备选方案:直接指定 rc9 版本安装
如果上述方法无效,也可以直接强制安装兼容版本的 rc9:
npm install rc9@你的本地版本号 --save
内容的提问来源于stack exchange,提问作者Bipa
相关产品推荐
相关产品推荐

