我已经通过“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

当前回答

我也犯了同样的错误,但它是由另一个问题引起的。

OS: windows 10
nodejs version: 15.12.0
npm version: 7.6.3

问题的原因是优雅的fs包。每当我尝试运行npm时,甚至运行npm-v都会触发“ReferenceError:未定义原始值”。

我尝试运行npm安装graceful-fs@latest,但它仍然不起作用,即使软件包是最新版本。

那是什么帮助了我?

运行npm ls优雅fs

通过这种方式,您可以找到优雅的fs依赖于的所有包及其版本。在我的情况下,大部分是3.0版本,尽管我安装了4.2.6版本

那么如何修复它呢?

打开npm-shrinkwrap.json(不确定packages-lock.json)并更改搜索优雅的fs,您会看到它在一些地方有较旧的版本。将其替换为^4.2.6(或更新版本)。

然后npm审计修复——强制在任何地方强制安装新版本。

希望这对你有用,我花了几个小时才找到修复方法。

其他回答

我也犯了同样的错误,但它是由另一个问题引起的。

OS: windows 10
nodejs version: 15.12.0
npm version: 7.6.3

问题的原因是优雅的fs包。每当我尝试运行npm时,甚至运行npm-v都会触发“ReferenceError:未定义原始值”。

我尝试运行npm安装graceful-fs@latest,但它仍然不起作用,即使软件包是最新版本。

那是什么帮助了我?

运行npm ls优雅fs

通过这种方式,您可以找到优雅的fs依赖于的所有包及其版本。在我的情况下,大部分是3.0版本,尽管我安装了4.2.6版本

那么如何修复它呢?

打开npm-shrinkwrap.json(不确定packages-lock.json)并更改搜索优雅的fs,您会看到它在一些地方有较旧的版本。将其替换为^4.2.6(或更新版本)。

然后npm审计修复——强制在任何地方强制安装新版本。

希望这对你有用,我花了几个小时才找到修复方法。

Gulp 3.9.1不适用于Node v12.x.x,如果升级到Gulp 4.0.2,则必须使用新语法(series&parallels)完全更改gulpfile.js。因此,您最好的选择是通过在终端中使用以下代码降级到Node.js v 11.x.x(11.15.0版本对我来说很好):

nvm install 11.15.0
nvm use 11.15.0 # Just in case it didn't automatically select the 11.15.0 as the main node.
nvm uninstall 13.1.0
npm rebuild node-sass

对于在ADOS CI Build中由于相同原因出现相同错误的任何人:

这个问题是我在寻求帮助时发现的第一个问题。我有一个ADOS CI构建管道,其中第一个Node.js工具安装程序任务用于安装Node.js。然后,npm任务用于安装Gulp.js(npm install-g gulf)。然后,下面的Gulp.js任务运行gulpfile.js中的默认任务。

当我将Node.js工具更改为安装12.x最新节点而不是旧节点时,Gulp.js的最新版本为4.0.2。结果与问题中描述的错误相同。

在这种情况下,对我有用的是将Node.js降级到最新的11.x版本,正如Alphonse R.Dsouza和Aymen Yaseen所建议的那样。在这种情况下,虽然不需要使用他们建议的任何命令,但只需将Node.js工具安装程序版本规范设置为11.x的最新Node.js版本。

安装并运行的Node.js的确切版本是11.15.0。我不必降级Gulp.js。

我建议您首先确保NPM安装不是您的问题。然后降级Node.js和Gulp.js版本。我使用了Node.js 10.16.1和Gulp.js 3.9.1。

要降级Gulp.js安装,您可以尝试:

npm install gulp@^3.9.1

如果在使用最新的gulp^4.0时保持Node.js v12,请执行以下步骤:

使用以下命令更新命令行界面(仅供预防):

npm i gulp-cli -g

添加/更新package.json文件的gulpunderdependencies部分

"dependencies": {
  "gulp": "^4.0.0"
}

删除package-lock.json文件。

删除node_modules文件夹。

最后,运行npm i升级并重新创建一个全新的node_modules文件夹和package-lock.json文件,其中包含Gulp^4.0的正确参数:

npm i

注意,Gulp.js 4.0引入了series()和parallel()方法来组合任务,而不是Gulp 3中使用的数组方法,因此您可能会或可能不会在旧的gulpfile.js脚本中遇到错误。

为了了解更多关于应用这些新功能的信息,本网站对其做了充分的介绍:如何迁移到Gulp.js 4.0