如何在Node.js中解决“ReferenceError: primordials is not defined”错误

888

我通过 '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

我以前尝试过这个gulp sass-watch命令:

npm -g install gulp-cli

如果在通过 Visual Studio 任务运行程序自动执行 gulp 任务时遇到此问题(特别是在更新 VS 后),请参见此处 - https://dev59.com/DLvpa4cB1Zd3GeqPCPoZ#72709758 - Chris Halcrow
44个回答

16

我遇到了同样的错误。最终,当我更新了所有包并在package.json中提及与我的本地工作系统相同的Node.js引擎版本和npm版本时,问题得以解决。

 "engines": {
    "node": "10.15.3",
    "npm": "6.9.0"
 }

在部署到Heroku时,我遇到了这个错误。

欲了解更多,请参阅Heroku支持文档


这只是一种解决方法,而不是修复。有时我们无法将Node版本从12降级到10。 - saumilsdk
嘿,你只需要确保在Heroku和本地机器上的节点引擎版本相同就行了。 :) - Ravi Anand

10

检查 Node.js 版本:

 node --version

检查 gulp 版本:

gulp -v

如果Node.js版本大于等于12且gulp版本小于等于3,则执行以下操作之一:
  1. 升级gulp
sudo npm install -g gulp
  1. 降级node
sudo npm install -g n
sudo n 11.15.0

如何使用npm升级(或降级)Node.js


9

这个问题只在我使用Visual Studio的任务运行器浏览器(Task Runner Explorer)时才出现,而在命令行或PowerShell中运行时并没有出现。

我意识到VS忽略了我使用NVM设置的Node版本。

通过将PATH变量设置为比VS中的外部工具具有更高的优先级,按照这篇帖子:Configure which NPM is used by Visual Studio's Task Runner Explorer?,它使用了由NVM设置的Node版本而不是VS安装的版本。 enter image description here


1
这是我的问题,而且验证/解决这个问题的简单性让我希望我能点赞两次,我真的希望我能先看到这个。 - khrave

8

如果问题不是由于 gulp 引起的,则请检查 unzip npm 模块。自上次更新以来已经过去了六年。它不适用于 Node.js > v11。

尝试这个:

npm install -g n

sudo n 11.15.0

unzip2相同。但是,unzip2有一个可用的替代品 - node-unzip-2 - Kunal
我在我的项目中遇到了同样的问题。转而使用 unzipper 分支 https://github.com/EvanOxfeld/node-unzip/issues/122#issuecomment-492099935 - Chaki_Black

6

我曾经升级到 Node.js 12 版本后,出现了这个问题。但是,我将版本降级到稳定版后,问题得到了解决:

sudo n 10.16.0

3
如果您尝试这样做并出现错误:'sudo: n: command not found',请务必先安装n,方法是:'npm install -g n'。 - Brad Ahrens
尝试在 Windows 10 (64 位) 上运行此命令,结果如下: C:\react-script-editor>npm install -g n npm ERR! code EBADPLATFORM npm ERR! notsup n@6.1.0 不支持当前平台: wanted {"os":"!win32","arch":"any"} (current: {"os":"win32","arch":"x64"}) npm ERR! notsup 有效的操作系统: !win32 npm ERR! notsup 有效的处理器架构: any npm ERR! notsup 实际的操作系统: win32 npm ERR! notsup 实际的处理器架构: x64 - Nigel Price
2
降级不是一个选项。我们需要的是修复而不是权宜之计解决方案。 - saumilsdk

6
这个错误是由于 Node.js 的新版本(12)和 Gulp 的旧版本(小于4)引起的。
降级 Node.js 和其他依赖项并不推荐。我通过更新 package.json 文件并获取所有依赖项的最新版本来解决了这个问题。为此,我使用了 npm-check-updates。它是一个模块,可以将 package.json 更新为所有依赖项的最新版本。 参考https://www.npmjs.com/package/npm-check-updates
npm i -g npm-check-updates
ncu -u
npm install

在大多数情况下,我们还需要更新gulpfile.js文件,如下所示:

参考资料: Gulp 4: The new task execution system - gulp.parallel and gulp.series, Migration

更新前:

gulp.task(
    'sass', function () {
        return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])

            ....
    }
);

Other configuration...

gulp.task(
    'watch', function () {
        gulp.watch(sourcePath + '/sass/**/*.scss', ['sass']);
    }
);

之后:

gulp.task('sass', gulp.series(function(done) {
    return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])

            ...

    done();
}));

Other config...

gulp.task(
    'watch', function () {
        gulp.watch(sourcePath + '/sass/**/*.scss', gulp.series('sass'));
    }
);

如果您没有复杂的gulp文件,这是一个很好的解决方案。在我的情况下,我只需要调整每个gulpfile.js中的两行代码。感谢提供简短的迁移指南! - Tobias

5

我遇到了同样的问题。我尝试了以下方法,并且对我确实起作用:

  1. Check the version of Node.js and Gulp.js (a combination of Node.js v12 and Gulp.js less than v4 doesn't work)

  2. I downgraded the NPM version by:

    sudo NPM install -g n
    sudo n 10.16.0
    

它运行得很好。然后只需按照您的控制台的说明操作即可。


3

我在Windows 10上通过从添加或删除程序→Node.js中卸载Node.js来解决了这个问题。

然后,我从https://nodejs.org/download/release/v11.15.0/安装了11.15.0版本。

如果你正在运行64位的Windows,请选择node-v11.15.0-x64.msi


3

我在Windows 10上遇到了这个错误。后来发现是漫游配置文件损坏了。

Original Answer翻译成"最初的回答"

npm ERR! node v12.4.0
npm ERR! npm  v3.3.12

npm ERR! primordials is not defined
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:

删除 C:\Users\{user}\AppData\Roaming\npm 文件夹解决了我的问题。


3
这让我的整个npm依赖出了问题,很抱歉。 - ashilon

3
  • 删除 package-lock.json 或 yarn.lock 文件。

  • 然后删除 node_modules 文件夹。

  • 接着修改 package.json 文件-

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

  • 最后运行- npm install

这样就足以解决这个问题了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接