前言

在维护远古项目的时候,当执行完npm run dev的时候出现了个 ReferenceError: primordials is not defined 错误,查看发现是 node 版本和 gulp 版本不兼容导致的,由于只是【维护一下】,因此排除将它们都升级的方案。

解决方案

shrinkwrap

package.json 文件的同级目录下新建一个 npm-shrinkwrap.json 文件

{
  "dependencies": {
    "graceful-fs": {
      "version": "4.2.3"
    }
  }
}

然后删除 node_modules,再重新 npm install 即可。

这个文件在执行过一次 npm install 以后,下次再执行就没有效果了!

resolutions

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

{
  // current package.json
  "scripts": {
    // current package.json scripts
    "preinstall": "npx npm-force-resolutions"
  },
  "resolutions": {
    "graceful-fs": "4.2.3"
  }
}

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