Answers:
我遇到了同样的错误。我怀疑您正在使用节点12和gulp3。该组合不起作用:https : //github.com/gulpjs/gulp/issues/2324
从1月开始的以前的解决方法也不起作用:https : //github.com/gulpjs/gulp/issues/2246
解决方案:升级到gulp 4或降级到较早的节点。
webshot
节点包出现类似问题。我怀疑他们需要先更新一些内容,然后才能继续使用Node v12。
v12.1.0
和gulp,gulp@4.0.2
但无法正常工作
v10.x
和v3.x
gulp,然后魔术发生了
根据gulp@3.9.1
Node.js 12 更新旧项目时,我们遇到了相同的问题。
这些修复程序使您可以gulp@3.9.1
通过覆盖graceful-fs
version 来使用Node.js 12 4.2.3
。
创建一个包含以下内容的npm-shrinkwrap.json
文件:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.3"
}
}
}
提交此npm-shrinkwrap.json
文件。然后执行npm install
将更新npm-shrinkwrap.json
文件。
不幸的是,如果您npm install
再次使用此解决方案,将无法再使用。请参阅下面的其他解决方案。
Yarn v1 支持将软件包解析为定义的版本。您需要在以下resolutions
部分添加一个部分package.json
:
{
// Your current package.json contents
"resolutions": {
"graceful-fs": "4.2.3"
}
}
感谢@jazd以这种方式解决问题。
使用npm-force-resolutions
预安装脚本,可以获得与yarn v1类似的结果。您需要通过以下方式修改package.json:
{
// Your current package.json
"scripts": {
// Your current package.json scripts
"preinstall": "npx npm-force-resolutions"
},
"resolutions": {
"graceful-fs": "4.2.3"
}
}
npm-force-resolutions
会在完成之前将package-lock.json
文件更改为graceful-fs
所需的版本install
。
如果您.npmrc
在项目中使用自定义文件,并且其中包含代理或自定义注册表,则需要更改npx npm-force-resolutions
为,npx --userconfig .npmrc npm-force-resolutions
因为到目前为止,默认情况下npx
不使用当前文件夹.npmrc
文件。
这个问题从事实茎gulp@3.9.1
依赖于graceful-fs@^3.0.0
它monkeypatches Node.js的fs
模块。
在11.15版之前(这是开发分支的版本,不应该在生产中使用),它一直可以与Node.js 一起使用。
graceful-fs@^4.0.0
不再猴子补丁Node.js fs
模块,这使其与Node.js> 11.15兼容。
请注意,这不是一个长期解决方案,但是在您没有时间更新到时会有所帮助gulp@^4.0.0
。
npm install
以重新生成package-lock.json
或时npm-shrinkwrap.json
,似乎无法锁定此依赖项。重新运行后npm install --no-save
,生成的文件package-lock.json
仍指示npm安装缺少的依赖项。
使用以下命令并安装节点v11.15.0:
npm install -g n
sudo n 11.15.0
会解决
ReferenceError:节点中未定义primordials
来自@Terje Norderhaug @Tom Corelis的引用。
只需按照以下步骤。我在Windows 10上,它对我来说非常理想!
package.json
的npm-shrinkwrap.json
文件所在的目录中: {
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
运行npm install
,不用担心,它将npm-shrinkwrap.json
随着大量内容进行更新。
运行gulp
以启动项目。
使用以下命令进行安装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
Gulp 3.9.1不适用于Node v12.xx,如果升级到Gulp 4.0.2,则必须使用新的语法(系列和并行)完全更改gulpfile.js。因此,最好的选择是降级到Node V 11.xx,对我来说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.json
,因为它是在我的本地工作系统。
"engines": {
"node": "10.15.3",
"npm": "6.9.0"
}
在heroku上部署时出现此错误。
以获得更多结帐Heroku支持
降级为节点稳定版为我解决了此问题,因为在升级到节点12之后发生了此问题
sudo n 10.16.0
n
:'npm install -g
Gulp 3.*
在Node 12.*
或更高版本上不起作用。您必须降级Node或升级Gulp。
如果时间不足,则将Node降级至v11。*或更低版本;如果您需要更新的功能,并且有时间修复大量的依赖项,请将Gulp升级到4. *或更高版本!
正如其他人已经提到的那样,3.*
Node 12
或更高版本不支持Gulp ,因此您必须将Node版本降级到11.*
或更低,或者将Gulp升级到4.0
。
最好的选择最终取决于您有多少时间,因为升级Gulp带来了更干净的gulpfile和内置控制(使任务以串行或并行方式运行)的好处,而且还依赖于您将gulpfile重新编写为新语法,并且可能(阅读:可能会-参见本注释的结尾)引起与某些依赖项的冲突。
这是最简单,最快的选择。特别是如果您使用n或nvm,因为它们使您可以非常快速地安装并在Node版本之间切换。
n 10.16.0
nvm install 10.16.0
完成此操作后,您可能需要重建npm依赖关系,或者删除node_modules
文件夹和package-lock.json
文件,然后重新安装依赖关系。尽管如果仅恢复到先前存在的Node版本,则应该可以。
如上所述,这是一项耗时更多的任务,但从长远来看可能会带来好处。例如,Node 12
现在引入了对ES模块的本机支持(在实验性标志后面),并在Node中引入了全面支持13
。
您可能需要升级Node才能使用它,从而迫使您升级Gulp。或者,您可能只是想使用Gulp 4的好处,因为它可以更好,更有效地控制编写任务。
已经有很多关于此的文章,所以我将不进一步详细说明细节,但要重申- 这不是一项快速的工作。根据项目的大小,可能需要进行一些显着的重写,并且您的依赖项可能会中断。如果时间紧缺,则应该选择简单地降级Node,至少是暂时降级。
如果像我一样,您已经在使用Gulp 4+(我4.0.2
最初在Node 10上使用Gulp ),并且最近升级(我已升级到Node 13.8.0
)仍然存在问题,那可能是因为依赖项依赖于古尔夫(Gulp)的较旧版本,并且该产品已在管道中被发现。
就我而言,gulp-combine-mq
是一个使用Gulp的依赖项3.9.*
。在我的gulpfile中禁用此任务将使Gulp再次运行。
如果发生这种情况,您可以选择以下几种方法:
不用说,如果您有几个依赖于Gulp较旧版本的插件-尤其是如果这些插件对您的应用程序至关重要-在这里,可能会花费大量额外的时间来升级Gulp(因此,上面的警告)。
如果发生这种情况,最好只是降级Node,至少直到可以发布补丁为止。
该错误是由于新版本的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'));
}
);
我在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
文件夹解决了我的问题。
只需按照以下步骤。它可以与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将保持不变并可以永久使用。
这可能来得很晚,但是对于仍然有兴趣在使用最新的gulp ^ 4.0时保留其Node v12的任何人,请执行以下步骤:
使用以下命令更新命令行界面(仅出于预防目的):
npm i gulp-cli -g
添加/更新gulp
package.json的underdepends部分
"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
脚本中可能会或可能不会遇到错误。
要了解有关应用这些新功能的更多信息,此站点确实做到了合理:https : //www.sitepoint.com/how-to-migrate-to-gulp-4/
(如果有帮助,请留下重击)
gulp-cli
用 我遵循了您的步骤,并开始使一切正常。但是后来我卸载了gulp-cli
(因为我没有看到它的使用位置),并且一切仍然正常。不过,感谢您的回答,因为我已经启动并再次使用node v12.9.1
和Gulp 运行4.0.2
!
我通过从添加或删除程序-> Node.js卸载节点修复了Windows 10上的此问题
然后我从https://nodejs.org/download/release/v11.15.0/安装了11.15.0版
如果运行Windows 64位,则选择node-v11.15.0-x64.msi。
Gulp在Nodejs 11及更高版本中出现了问题。卸载当前节点版本,然后重新安装v10.15.1,此处是该版本的链接。这对我有帮助,也可以解决您的问题。
对于那些正在使用yarn
。
yarn global add n
n 11.15.0
yarn install # have to install again
对于因相同原因在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的等级。
你在这里有两个选择
通过将Node.js版本从降级并重新安装12.14.0
来解决。10.18.0
node_modules