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

当前回答

简单优雅的解决方案

只需遵循以下步骤。它与多次运行的npm安装或安装任何其他模块,甚至将项目发布到artifactory,都能完美配合。

在package.json所在的目录中,创建一个npm-shrinkwrap.json文件,其中包含以下内容:

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

运行npm install,不用担心,它会用一堆内容更新npm-shrinkwrap.json。让我们通过更新package.json脚本选项来消除这些更新。

"scripts": {
    "preshrinkwrap": "git checkout -- npm-shrinkwrap.json",
    "postshrinkwrap": "git checkout -- npm-shrinkwrap.json"
}

现在,您可以运行npm安装程序,您的npm-shrinkwrap.json将完好无损,并将永远工作。

其他回答

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

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

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

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

使用以下命令安装Node.js v11.15.0:

npm install -g n

sudo n 11.15.0

将解决

ReferenceError:节点中未定义原始值

来自@Terje Norderhaug@Tom Corelis的回答。

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

删除package-lock.json或yarn.lock文件。然后删除node_modules。之后,修改package.json文件-“相关性”:{“大口大口”:“^4.0.0”}然后运行-npm install

这将足以解决这个问题。