ReferenceError: primordials is not defined
错误现象
今天在处理一个老项目的 bug 时,执行 npm install
正常,执行 npm run start
或者 npm run build
意外报错 ReferenceError: primordials is not defined
。
尝试重新链接网络,删除 node_modules 重新安装等方法,不生效。
尝试手动安装 primordials 这个第三方库,也不生效,这个第三方库好像有问题,npm 和 github 上找不到源码。
错误原因
查阅资料后,发现第三方依赖和本地 node 版本不符合。
我这个老项目中,依赖一个蚂蚁金服自己的构建工具 rc-tools
这个构建工具是基于 gulp
实现的。
因为是一个老项目 rc-tools
版本比较老,依赖的 gulp
版本同样比较老。
I hit the same error. I suspect you’re using Node.js 12 and Gulp.js 3. That combination does not work: Gulp.js 3 is broken on Node.js 12 #2324
原因:第三方项目依赖 gulp(3.9.1) 然后 gulp 和当前 node (16.8) 版本不匹配
解决方案
方案一
升级 gulp 版本。因为这个项目比较老了,临时改一个 bug,如果升级,需要更新的东西比较多,可能耽误项目进度,同时可能有各种新的问题。所以暂时不升级。
方案二
降级本地 node 版本,可以使用 n 或者 nvm 管理本地的 node 版本。我尝试把版本降低到 node 10,这样可以正常运行这个老项目。
改完这个 bug 还需要再切回 node 16 版本
参考链接如下
https://blog.csdn.net/tianchoy/article/details/124096178
https://blog.csdn.net/sunny_desmond/article/details/107506626