# Gulp 与 Node 版本不兼容
2021-05-17
# 问题描述:
之前使用的 node 版本一直是 v8.x.x,最近升级了 node 版本,为 v14.16.0,然后在运行之前 Gulp 搭建的项目的时候,发现跑不起来,报错如下
fs.js:45
} = primordials;
^
ReferenceError: primordials is not defined
at fs.js:45:5
at req_ (/Users/fuyumin/Desktop/dz_project/gulp-project/hongchuan/node_modules/natives/index.js:143:24)
at Object.req [as require] (/Users/fuyumin/Desktop/dz_project/gulp-project/hongchuan/node_modules/natives/index.js:55:10)
at Object.<anonymous> (/Users/fuyumin/Desktop/dz_project/gulp-project/hongchuan/node_modules/graceful-fs/fs.js:1:37)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 原因:
我本地项目的 Gulp 版本如下
CLI version: 2.2.0
Local version: 3.9.1
1
2
2
Gulp@3.x.x 与当前 Node@14.x.x 版本不兼容,官网的建议是 Node 版本退回到 v12.x.x 以下(或者升级到 Gulp@4.x.x),那我哪能接受,毕竟我已经不靠 Gulp 吃饭了 😄,于是开始寻找其他解决方式,终于,在我强大的英语阅读能力下,找到了一篇一分钟解决你的 gulp 问题 (opens new window),不过现在好像打不开了,还是得靠自己
# 解决方式:
首先删除 node 依赖 node_modules,删的渣都不要剩,然后在根目录下新建一个npm-shrinkwrap.json
文件,配置如下
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
下一步,常规操作,npm install
,然后启动 Gulp 项目,我的启动命令是gulp serve
,你会发现项目神奇般的又跑起来了(其实也没啥神奇的)!
# npm-shrinkwrap.json
有关npm-shrinkwrap.json
文件的作用,我给你们放这了,自己瞅瞅吧!
package-lock.json | npm Docs (opens new window) 对 npm 包精准控制之 npm-shrinkwrap.json 与 package-lock.json (opens new window)