gulp项目中ReferenceError: primordials is not defined报错解决方法

gulp项目中ReferenceError: primordials is not defined报错解决方法

现状

gulp项目中,运行gulp build后报错,报错信息如下:

fs.js:40
} = primordials;
    ^
ReferenceError: primordials is not defined
at fs.js:40:5

ReferenceError: primordials is not defined 意思是primordials这个没被定义,是因为项目中gulp版本和node版本不兼容,先看下本地的版本:

gulp --version

CLI version: 2.3.0
Local version: 3.9.1
node -version

v14.6.0

node >=12 && gulp <= 3的话,他们的版本不兼容,我本地是14的版本。

解决方法

找到原因后,有两种解决方法,降级node和升级gulp

解决方法之:降级node

不建议用这种方法,毕竟时代在进步,还是不要倒退的好

解决方法之:升级gulp(1)

不降级node版本,那就更新gulp版本,最新的已经4.x了,但是这个gulp又不经常用,又不想更新他
那就用另一个解决方法,使用npm shrinkwrap锁定依赖版本:

1、项目根目录新建npm-shrinkwrap.json
2、npm-shrinkwrap.json内容修改如下:
{
  "dependencies": {
    "graceful-fs": {
        "version": "4.2.2"
     }
  }
}

然后重新执行npm install,这时候再去执行gulp相关操作就不会报错了。
注意:这个文件在执行过一次npm install以后,就失效了,下次再执行就没有效果了。

解决方法之:升级gulp(2)

在package.json文件里加入以下代码:

{
  "scripts": {
    "preinstall": "npx npm-force-resolutions"
  },
  "resolutions": {
    "graceful-fs": "4.2.2"
  }
}

npm-force-resolutions会更改package-lock.json文件来设置graceful-fs到指定的版本。
这个方法每次执行npm install都会生效

你可能感兴趣的:(npm,gulp)