Gulp与Node版本不兼容

问题描述:

之前使用的node版本一直是v8.x.x,最近升级了node版本,为v14.16.0,然后在运行之前Gulp搭建的项目的时候,发现跑不起来,报错如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)

原因:

我本地项目的Gulp版本如下

1
2
CLI version: 2.2.0
Local version: 3.9.1

Gulp@3.x.x与当前Node@14.x.x版本不兼容,官网的建议是Node版本退回到v12.x.x以下(或者升级到Gulp@4.x.x),那我哪能接受,毕竟我已经不靠Gulp吃饭了😄,于是开始寻找其他解决方式,终于,在我强大的英语阅读能力下,找到了一篇一分钟解决你的gulp问题,不过现在好像打不开了,还是得靠自己

解决方式:

首先删除node依赖node_modules,删的渣都不要剩,然后在根目录下新建一个npm-shrinkwrap.json文件,配置如下

1
2
3
4
5
6
7
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}

下一步,常规操作,npm install,然后启动Gulp项目,我的启动命令是gulp serve,你会发现项目神奇般的又跑起来了(其实也没啥神奇的)!

npm-shrinkwrap.json

有关npm-shrinkwrap.json文件的作用,我给你们放这了,自己瞅瞅吧!

package-lock.json | npm Docs
对npm包精准控制之npm-shrinkwrap.json与package-lock.json

END!