我已经通过npm install安装了节点模块,然后尝试在命令提示符下执行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
答案 0 :(得分:208)
只需遵循these steps。我在Windows 10上运行,对我来说效果很好!
package.json
的目录中,创建一个包含以下内容的npm-shrinkwrap.json
文件: {
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
运行npm install
,请放心,它将使用大量内容更新npm-shrinkwrap.json
。
运行gulp
以启动项目。
答案 1 :(得分:40)
使用以下命令并安装 node v11.15.0 :
npm install -g n
sudo n 11.15.0
将解决
ReferenceError:未在节点中定义原始字符串
来自@Terje Norderhaug @Tom Corelis的答案。
答案 2 :(得分:31)
我遇到了同样的错误。我怀疑您正在使用节点12和gulp3。该组合不起作用:https://github.com/gulpjs/gulp/issues/2324
从1月开始的以前的解决方法也不起作用:https://github.com/gulpjs/gulp/issues/2246
解决方案:要么升级到gulp 4,要么降级到早期的节点。
答案 3 :(得分:24)
在根据gulp@3.9.1
将旧项目更新到Node.js 12时,我们遇到了相同的问题。
通过使用包含以下内容的npm-shrinkwrap.json
file将gulp@3.9.1
覆盖到graceful-fs
版本,此修补程序使您可以将Node.js 12与4.2.2
一起使用:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
然后执行npm install
,这将更新npm-shrinkwrap.json
文件。
此问题源于gulp@3.9.1
上的graceful-fs@^3.0.0
depends,它修补了Node.js fs
模块。
此功能一直与Node.js一起使用,直到版本11.15(这是开发分支的version,不应该在生产中使用)。
graceful-fs@^4.0.0
不再猴子补丁Node.js fs
模块,这使其与Node.js> 11.15兼容。
请注意,这不是一个长期解决方案,但是在您没有时间更新到gulp@^4.0.0
时会有所帮助。
答案 4 :(得分:14)
使用以下命令安装node v11.15.0
和gulp 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: primordials is not defined in node
答案 5 :(得分:12)
简单优雅的解决方案
只需执行以下步骤。它可以与npm install多次运行或安装任何其他模块,甚至将项目发布到工件上完美配合。
在具有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 install,并且您的npm-shrinkwrap.json将保持不变并且可以永久使用。
答案 6 :(得分:9)
Gulp 3.*
在节点12.*
或更高版本上不起作用。您必须降级Node或升级Gulp。
如果时间紧迫,请将Node降级至v11。*或更低版本;如果您需要更新的功能,并且有时间修复可能的依赖关系破坏,请将Gulp升级到4. *或更高版本!
正如其他人已经提到的那样,节点3.*
或更高版本不支持Gulp 12
,因此您必须将Node版本降级到11.*
或更低版本,或者升级Gulp到4.0
。
最佳选择最终取决于您有多少时间,因为升级Gulp可以带来更干净的gulpfile以及对在series or parallel中运行任务的内置控制的好处,而且还取决于您将gulpfile重写为一种新语法,并且可能(阅读:可能会-见本注释的结尾)会导致与某些依赖项发生冲突。
这是最简单,最快的选择。特别是如果您使用n或nvm,因为它们使您可以非常快速地安装并在Node版本之间切换。
n 10.16.0
nvm install 10.16.0
完成此操作后,您可能 需要重建npm dependencies或删除node_modules
文件夹和package-lock.json
文件,然后重新安装您的依赖性。尽管如果仅恢复到先前存在的Node版本,那应该没问题。
如上所述,这是一项更耗时的任务,但从长远来看可能会带来好处。例如,节点12
现在引入了对ES模块的本机支持(在实验性标志之后),并在节点13
中引入了全面支持。
您可能需要升级Node才能使用它,从而迫使您升级Gulp。或者,您可能只是想使用Gulp 4的好处,因为它可以更好,更有效地控制编写任务。
已经有很多关于此的文章,所以我将不进一步详细说明细节,但要重申-这不是一项快速的工作。根据项目的大小,可能需要进行一些显着的重写,并且您的依赖项可能会中断。如果时间紧迫,则应该选择简单地降级Node,至少是暂时降级。
如果像我一样,您已经在使用Gulp 4+(我以前在节点10上使用Gulp 4.0.2
),并且最近升级了(我升级到Node 13.8.0
),那么您是否仍然这个问题,可能是因为依赖项依赖于旧版本的Gulp,并且已经陷入了流水线。
对于我来说,gulp-combine-mq
是使用Gulp 3.9.*
的依赖项。在我的gulp文件中禁用此任务将使Gulp再次运行。
如果发生这种情况,您可以选择以下几种方式:
不用说,如果您有几个依赖于Gulp较旧版本的插件-尤其是如果这些插件对您的应用程序至关重要,那么在这里您可能会花费大量额外的时间来升级Gulp(因此警告以上)。
如果发生这种情况,最好只是降级Node,至少直到可以发布补丁为止。
答案 7 :(得分:7)
答案 8 :(得分:5)
对我来说,Diego Fortes' answer 只需稍作改动即可。
如果出现此错误,这是我的工作流程:
npm install
npm install gulp
用
创建文件npm-shrinkwrap.json{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
npm install
(再次)(不是再次npm install gulp
!非常重要 - 否则错误会再次出现)
gulp(正在工作)
答案 9 :(得分:4)
具有相同的错误,并最终在更新所有软件包时加以解决,然后在package.json
中提及了与我的本地操作系统中相同的节点引擎版本和npm版本。
"engines": {
"node": "10.15.3",
"npm": "6.9.0"
}
在heroku上部署时出现此错误。
更多结帐heroku support
答案 10 :(得分:4)
检查节点版本:
node --version
检查gulp版本:
gulp -v
如果节点> = 12并且gulp <= 3,请执行以下一项操作:
sudo npm install -g gulp
sudo npm install -g n
sudo n 11.15.0
https://www.surrealcms.com/blog/how-to-upgrade-or-downgrade-nodejs-using-npm.html
答案 11 :(得分:4)
Gulp 3.9.1不适用于Node v12.x.x,如果升级到Gulp 4.0.2,则必须使用新的语法(系列和并行)完全更改gulpfile.js。因此,最好的选择是降级到Node 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
干杯!
答案 12 :(得分:2)
使用NVM管理您正在使用的节点版本,运行以下命令对我有用:
$ cd /to/your/project/
$ nvm install lts/dubnium
$ nvm use lts/dubnium
$ yarn upgrade # or `npm install`
答案 13 :(得分:2)
我在Windows 10上通过从“添加或删除程序-> Node.js”中卸载节点来解决此问题
然后我从https://nodejs.org/download/release/v11.15.0/安装了11.15.0版
如果运行Windows 64位,请选择node-v11.15.0-x64.msi。
答案 14 :(得分:2)
我在Windows 10上遇到此错误。事实证明这是一个损坏的漫游配置文件。
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
文件夹解决了我的问题。
答案 15 :(得分:2)
此错误是由于 Node的新版本(12)和 gulp的旧版本(小于4)引起的。
不建议降级Node和其他依赖项。我通过更新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
,如下所示:
参考:https://fettblog.eu/gulp-4-parallel-and-series/#migration
之前:
gulp.task(
'sass', function () {
return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])
....
}
);
Other config...
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'));
}
);
答案 16 :(得分:1)
对于使用element {
height: 50vh!important;
}
的用户。
yarn
答案 17 :(得分:1)
这可能来得很晚,但是对于仍然有兴趣在使用最新的gulp ^ 4.0时保留其Node v12的任何人,请执行以下步骤:
使用以下命令更新命令行界面(出于预防目的)
npm i gulp-cli -g
添加/更新package.json依赖项下的gulp
"dependencies": {
"gulp": "^4.0.0"
}
删除您的package-lock.json
文件
删除您的node_modules
文件夹
最后,运行npm i
来升级和重新创建具有正确参数的Gulp ^ 4.0的全新node_modules文件夹和package-lock.json文件
npm i
注意 Gulp.js 4.0引入了series()
和parallel()
方法来组合任务,而不是Gulp 3中使用的数组方法,因此您可能会遇到也可能不会遇到您的旧gulpfile.js
脚本中的错误。
要了解有关应用这些新功能的更多信息,此site确实做到了:https://www.sitepoint.com/how-to-migrate-to-gulp-4/
(如果有帮助,请重击)
答案 18 :(得分:1)
Gulp在Nodejs 11及更高版本中出现了问题。卸载当前节点版本,然后重新安装v10.15.1,此处是该版本的链接。这对我有帮助,也可以解决您的问题。
答案 19 :(得分:0)
对我有用的是在npm安装期间使用python2。
npm install --python =〜/ venv / bin / python
答案 20 :(得分:0)
安装 gulp 并将您的 Node.js 版本添加到 package.json 文件中,如下所示:
{
"dependencies": {
"node": "^10.16.3"
}
}
答案 21 :(得分:0)
我遇到了同样的错误,但它是由不同的问题引起的。
OS: windows 10
nodejs version: 15.12.0
npm version: 7.6.3
问题的原因是 graceful-fs 包。 每当我尝试运行 npm 时,即使运行 npm-v 也会触发“ReferenceError: primordials is not defined”。
我尝试运行 npm install graceful-fs@latest,但它仍然不起作用,即使该软件包是最新版本。
那么是什么帮助了我?
运行npm ls graceful-fs
通过这种方式,您将找到 graceful-fs
所依赖的所有软件包以及它的版本。就我而言,它主要是 3.0 版,即使我已经安装了 4.2.6 版
那么如何解决呢?
打开 npm-shrinkwrap.json(不确定packages-lock.json)并更改搜索graceful-fs
- 你会看到它在一些地方有旧版本。将其替换为 ^4.2.6
(或更新版本)。
然后 npm audit fix --force
将在任何地方强制安装较新的版本。
希望这对您有用,我花了几个小时才找到解决方法。
答案 22 :(得分:0)
由于我的项目使用的是 gulp 版本 4,因此我必须执行以下操作来解决此问题
这是我正在使用的版本的详细信息
现在运行 npm install 然后运行 gulp default。错误应该消失了,您可能会看到:
<块引用>从未定义任务:仅默认。
答案 23 :(得分:0)
答案 24 :(得分:0)
我遇到了同样的问题。 我为我努力的工作: 1)。检查NODE和GULP的版本(节点v12和gulp小于v4的组合不起作用) 2)。我将npm版本降级为: #sudo npm install -g n #sudo n 10.16.0 它工作正常,然后按照您的控制台进行操作
答案 25 :(得分:0)
降级到节点稳定版为我解决了这个问题,因为升级到节点12后就出现了
while(1) {
pthread_mutex_lock( &recoveryMutex );
while( workload < MAXLOAD ) {
pthread_cond_wait(&recoveryCond, &recoveryMutex );
}
/* Recovery Code */
/* Recovery Code */
/* Recovery Code */
pthread_mutex_unlock(&recoveryMutex);
}
答案 26 :(得分:0)
这是因为系统中node
和gulp
之间存在兼容性问题。降级node
或升级gulp
将解决此问题。
sudo npm i -g n
sudo n 11.15.0
请尝试删除node_modules
文件夹和package-lock.json
文件,如果仍然无法运行,请使用npm i
命令再次安装。
答案 27 :(得分:0)
我有同样的问题,但是我已经解决了这个问题。我建议您首先,首先确保 npm安装没问题。然后降级版本节点和gulp。我使用版本节点10.16.1和gulp 3.9.1。 要降低您的口水,可以写
npm install gulp@^3.9.1
答案 28 :(得分:0)
如果您尝试安装语义UI并发生以下错误,请尝试从nodejs.org,Morover下载具有最新功能的最新版本的节点js(13.5.0),而不是尝试npm install语义应该只添加链接(您可以从https://cdnjs.com/libraries/semantic-ui.to中找到index.html文件的标题。 祝你好运!
答案 29 :(得分:0)
通过将node.js版本从12.14.0
降级为10.18.0
并重新安装node_modules来解决
答案 30 :(得分:0)
您在这里有两个选择
答案 31 :(得分:0)
我将节点升级到版本12后出现此错误,该版本不适用于Gulp 3.9.1。关于我的gulpfile.js不太复杂的事实,我决定使用http://dev.craphael.fr/api/user.php?user=Osarel&password=test升级到Gulp 4,它运行良好,并且比我想象的要容易得多。
答案 32 :(得分:0)
我在Gulp 3的Node 12/13上也遇到了错误,移到Node 11上工作了
答案 33 :(得分:0)
对于由于相同原因在ADOS CI Build中出现相同错误的任何人:
这个问题是我在寻求帮助时发现的第一个问题。 我有一个ADOS CI构建管道,其中第一个Node.js工具安装程序任务用于安装Node。然后,使用npm任务安装gulp(npm install -g gulp)。然后,以下Gulp任务从gulpfile.js运行default-task。里面有一些无聊的东西。
当我更改Node.js工具以安装12.x最新节点而不是旧节点时,最新的gulp版本是4.0.2。结果是与问题中所述相同的错误。
在这种情况下对我有用的是将Alphonse R. Dsouza和Aymen Yaseen已经建议的将node.js降级到最新的11.x版本。在这种情况下,尽管不需要使用他们建议的任何命令,而只需将Node.js工具安装程序版本规范设置为11.x以上的最新Node版本。
已安装并正在运行的Node.js的确切版本是11.15.0。我不必降低Gulp的等级。
答案 34 :(得分:0)
因为使用s3 npm软件包时也会出现此错误。所以问题出在graceful-fs软件包上,我们需要对其进行更新。在4.2.3上工作正常。
所以只需查看它在日志跟踪中显示的npm软件包并将相应的graceful-fs更新到4.2.3。
答案 35 :(得分:-1)
我正在使用节点v12.13.1,因此我已降级到v10.19.0,并且在此之后运行良好。
答案 36 :(得分:-1)
我在安装npm软件包https://www.npmjs.com/package/webshot
时遇到了同样的问题注意:这是该程序包的一个已知问题,因为它取决于幕后的grace-fs。
FIX:1。 将graceful-fs升级到4.x或更高版本
修复:2。 使用webshot-node代替https://www.npmjs.com/package/webshot-node
答案 37 :(得分:-1)
我尝试了很多建议来解决Windows 10计算机上现有项目的此问题,并最终按照以下步骤进行了解决;
gulp -v
和node -v
,以检查其是否已完全卸载。请注意,有时当我在git分支之间切换时,可能需要关闭Visual Studio并再次以Admin身份运行,才能看到此解决方案再次起作用。
据我所见,这个问题是在为一个新项目安装Node.js的最新推荐版本(12.18.4)之后开始发生的,并且仅当某些FE更改未反映在现有Web上时我才意识到这一点项目。
答案 38 :(得分:-1)
卸载节点,然后使用给定的链接重新安装它。 https://nodejs.org/en/download/
答案 39 :(得分:-2)
解决问题的步骤:-
我已通过以下步骤解决了该问题:-
nvm install lts/dubnium
安装了lts / dubnium nvm install lts/dubnium
使用lts / dubnium 现在您可以大批部署