# 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

# 原因:

我本地项目的 Gulp 版本如下

CLI version: 2.2.0
Local version: 3.9.1
1
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

下一步,常规操作,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)

# END!