我已经通过“npm install”安装了Node.js模块,然后尝试在命令提示符下执行gulp sass watch。之后,我得到了以下回应。

[18:18:32] Requiring external module babel-register
fs.js:27
const { Math, Object, Reflect } = primordials;
                                  ^

ReferenceError: primordials is not defined

我在大口大口看之前已经试过了:

npm -g install gulp-cli

当前回答

我在Node.js 12/13和Gulp.js 3上也遇到了一个错误。移动到Node.js 11是有效的。

其他回答

当我们使用s3 NPM包时,也会出现此错误。所以问题出在优雅的fs包上——我们需要更新它。它在4.2.3中运行良好。

所以只需查看日志跟踪中显示的NPM包,并根据4.2.3更新优雅的fs。

我们在根据gulp@3.9.1到Node.js 12+。

这些修复使您能够使用Node.js 12+gulp@3.9.1通过将优雅的fs覆盖到版本^4.2.10。

如果您正在使用pnpm

pnpm支持覆盖某些依赖项版本。为此,您应该在package.json文件中添加pnpm部分:

{
  "pnpm": {
    "overrides": {
      "graceful-fs": "^4.2.10"
    }
  }
}

如果您使用纱线v1

Yarn v1支持将包解析为定义的版本。您需要在package.json中添加一个resolutions部分:

{
  "resolutions": {
    "graceful-fs": "^4.2.10"
  }
}

感谢@jazd以这种方式解决问题。

如果您正在使用npm

运行此命令以了解您正在使用的Node.js版本:

node -v

它将返回一个版本号<major><小调><补丁>如18.11.0。

如果您的版本是v16.14.0或更高版本,则可以通过在package.json文件中添加覆盖部分来覆盖曼妙fs的版本:

{
  "overrides": {
    "graceful-fs": "^4.2.10"
  }
}

否则,您需要使用npm-force分辨率作为预安装脚本,以便能够通过如下方式更改package.json文件来覆盖优雅fs的版本:

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

npm-force解析将在安装完成之前更改package-lock.json文件,以将优雅的fsto设置为所需版本。

如果您在项目中使用自定义.npmrc文件,并且该文件包含代理或自定义注册表,则可能需要将npx-npm-force分辨率更改为npx-userconfig.npmrc npm-force分辨率,因为某些版本的npx默认情况下不使用当前文件夹.npmrc。

问题的根源

这个问题源于以下事实:gulp@3.9.1取决于monkeypatchesNode.js fs模块的优雅fs@^3.0.0。

在11.15版本之前,这一直适用于Node.js(这是一个开发分支的版本,不应该在生产中使用)。

优雅的fs@^4.0.0不再对Node.js fs模块进行monkeypatch,这使其与Node.js>11.15兼容(已测试并与版本12、14和16一起使用)。

请注意,这不是一个长期的解决方案,但当您没有时间更新到狼吞虎咽@^4.0.0时,它会有所帮助。

对我来说,Diego Fortes的答案只需一个小小的改变。

如果出现此错误,以下是我的工作流程:

npm安装npm安装gulf使用创建文件npm-shrinkwrap.json{“相关性”:{“优雅的fs”:{“版本”:“4.2.2”}}}npm-install(再次)(不是npm-install-gulp!非常重要-否则会返回错误)大口大口(正在工作)

看起来您已经将nodejs的版本升级到+12,并且仍然使用gulf 3.9.1

您可以使用以下解决方案之一

将您的glup版本升级到+4或者简单地使用NVM节点版本管理器在同一台机器上运行多个nodejs版本。

一分钟内修复:

只需遵循以下步骤。我使用的是Windows 10,它非常适合我!

在package.json所在的目录中,创建一个npm-shrinkwrap.json文件,其中包含以下内容:{“相关性”:{“优雅的fs”:{“版本”:“4.2.2”}}}运行npm install,不用担心,它会用一堆内容更新npm-shrinkwrap.json。一口气开始这个项目。