Node v15.7.0运行gulp报ReferenceError: primordials is not defined如何解决
报错原因
该错误由Gulp 4.0.2与Node.js v12+版本的不兼容直接导致:
Node.js在v12版本正式移除了内部核心模块的primordials接口,而Gulp 4.0.2依赖的旧版graceful-fs包仍然调用了这个已废弃的内部API,在高版本Node环境下运行时就会抛出该引用错误。你当前使用的Node v15.7.0属于已移除该接口的版本,和本地安装的Gulp 4.0.2存在适配冲突。
解决方案
可根据项目实际情况选择以下任意一种方案解决:
方案1:降级Node.js到v11.x及以下版本
无需修改项目依赖,适配成本最低:
- 卸载当前Node v15.7.0,安装v11.15.0(v11系列最终稳定版)即可正常运行Gulp 4.0.2。
- 如果需要同时保留多个Node版本用于不同项目,可以使用版本管理工具切换,Windows系统可使用nvm-windows,macOS/Linux系统可使用nvm。
方案2:升级项目Gulp版本到4.0.3及以上
不想降级Node的话可以升级Gulp修复兼容性问题:
- 卸载本地旧版Gulp:
npm uninstall gulp --save-dev - 安装兼容高版本Node的新版Gulp:
npm install gulp@^4.0.3 --save-dev
注意:如果项目内有自定义Gulp任务依赖旧版Gulp的私有API,升级后需要做少量适配调整。
方案3:强制锁定兼容版本的graceful-fs
如果既不想降级Node,也不想升级Gulp,可以通过配置强制项目使用兼容高版本Node的graceful-fs:
- 在项目根目录新建
npm-shrinkwrap.json文件,写入如下内容:
{ "dependencies": { "graceful-fs": { "version": "4.2.11" } } }
- 删除项目根目录的
node_modules文件夹、package-lock.json文件,重新执行npm install安装依赖即可生效。
内容的提问来源于stack exchange,提问作者M K
相关产品推荐
相关产品推荐

