我已经通过“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 v11.15.0和Gulp.js v3.9.1:

npm install -g n

sudo n 11.15.0

npm install gulp@^3.9.1
npm install
npm rebuild node-sass

它将解决这个问题:

ReferenceError:节点中未定义原始值

其他回答

TL:博士

Gulp 3.*不适用于Node.js 12.*或更高版本。您必须降级Node.js或升级Gulp。

如果时间不足,请将Node.js降级到v11.*或更低版本;如果您需要更新的功能,并且有时间可能修复大量的依赖关系,请将Gulp升级到4.*或更高版本!

正如其他人已经提到的,Node.js 12或更高版本不支持Gulp 3.*,因此您必须将Node版本降级到11.*或更低,或者将Gulp升级到4.0。

最好的选择最终取决于你有多少时间,因为升级Gulp带来了更干净的Gulp文件的好处,并且内置了对任务串行或并行运行的控制,但也依赖于你将Gulp文件重写为新语法,并且可能(读:可能会-见本评论结尾)导致与某些依赖项的冲突。


降级Node.js

这是最简单快捷的选择。特别是如果您使用n或nvm,因为它们允许您快速安装并在Node.js版本之间切换。

在N上安装Node.js版本

n 10.16.0

在NVM上安装Node.js版本

nvm install 10.16.0

完成此操作后,您可能需要重建npm依赖项,或者删除node_modules文件夹和package-lock.json文件并重新安装依赖项。虽然如果您只是恢复到一个预先存在的Node.js版本,您可能会没事。


升级Gulp

如上所述,这是一项更耗时的任务,但从长远来看可能会带来好处。例如,Node.js 12现在引入了对ES模块的本地支持(在实验标志后面),并在Node.js 13中提供了完全支持。

您可能需要升级Node.js才能使用它,从而迫使您升级Gulp。或者你可能只是想要使用Gulp 4的好处,因为它可以更好、更有效地控制写作任务。

关于这一点,已经有很多文章了,所以我不会再详细说明细节,但要重申,这不是一项快速的工作。根据项目的大小,可能需要一些显著的重写,并且可能会有依赖关系中断。如果时间紧迫,您应该选择简单地降级Node.js,至少暂时如此。


但我已经有了Gulp 4,但它仍然不起作用!

如果像我一样,您已经在使用Gulp 4+(我使用的是Gulp 4.0.2,最初在Node.js 10上),并且最近升级了(我升级到Node.js 13.8.0),那么您仍然会遇到问题,这可能是因为依赖项依赖于旧版本的Gulp,而这正被管道所捕获。

在我的例子中,gulp combine mq是使用gulp 3.9.*的依赖项。在我的gulp文件中禁用此任务允许gulp再次运行。

如果发生这种情况,你有几个选择。你可以,

如果不是绝对必要的话,不使用插件寻找替代方案,修复插件

不用说,如果您有几个插件依赖于旧版本的Gulp,特别是如果这些插件对您的应用程序至关重要,那么升级Gulp可能会花费大量额外的时间(因此上面的警告)。

如果发生这种情况,最好只降级Node.js,至少在发布补丁之前。

我通过将Node.js版本从12.14.0降级到10.18.0并重新安装Node_modules来解决问题。

使用NVM管理您正在使用的Node.js版本,运行以下命令对我有效:

cd /to/your/project/
nvm install lts/dubnium
nvm use lts/dubnium
yarn upgrade # or `npm install`

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

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审计修复——强制在任何地方强制安装新版本。

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

对于使用纱线的用户:

yarn global add n
n 11.15.0
yarn install # Have to install again