Ram*_*esh 169 sass node.js gulp gulp-sass
我已经通过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
Run Code Online (Sandbox Code Playgroud)
在gulp sass-watch之前尝试过这个
npm -g install gulp-cli
Run Code Online (Sandbox Code Playgroud)
Pos*_*hin 375
只需按照以下步骤操作即可。我使用的是 Windows 10,它非常适合我!
在您package.json
创建npm-shrinkwrap.json
具有以下内容的文件的同一目录中:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行npm install
,别担心,它会更新npm-shrinkwrap.json
一堆内容。
运行gulp
以启动项目。
小智 211
我遇到了同样的错误。我怀疑您正在使用节点12和gulp3。该组合不起作用:https : //github.com/gulpjs/gulp/issues/2324
从1月开始的以前的解决方法也不起作用:https : //github.com/gulpjs/gulp/issues/2246
解决方案:升级到gulp 4或降级到较早的节点。
Alp*_*uza 23
使用以下命令并安装节点v11.15.0:
npm install -g n
sudo n 11.15.0
Run Code Online (Sandbox Code Playgroud)
会解决
ReferenceError:节点中未定义primordials
来自@Terje Norderhaug @Tom Corelis的引用。
小智 22
Gulp 3.9.1 不适用于 Node v12.xx,如果您升级到 Gulp 4.0.2,则必须使用新语法(串行和并行)彻底更改 gulpfile.js。所以你最好的办法是通过在终端中简单地使用以下代码降级到 Node.js 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
Run Code Online (Sandbox Code Playgroud)
sau*_*sdk 21
简单优雅的解决方案
只需按照以下步骤操作即可。它与 npm install 多次运行或安装任何其他模块甚至将项目发布到 artifactory 完美配合。
在 package.json 所在的同一目录中,创建一个包含以下内容的npm-shrinkwrap.json文件:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行 npm install,别担心,它会用一堆内容更新 npm-shrinkwrap.json。让我们通过更新package.json脚本选项来摆脱这些更新。
"scripts": {
"preshrinkwrap": "git checkout -- npm-shrinkwrap.json",
"postshrinkwrap": "git checkout -- npm-shrinkwrap.json"
}
Run Code Online (Sandbox Code Playgroud)
现在您可以运行 npm install 并且您的 npm-shrinkwrap.json 将完好无损并且将永远工作。
kev*_*vnk 16
使用NVM管理您正在使用的节点版本,运行以下命令对我有用:
$ cd /to/your/project/
$ nvm install lts/dubnium
$ nvm use lts/dubnium
$ yarn upgrade # or `npm install`
Run Code Online (Sandbox Code Playgroud)
Oli*_*ver 15
Gulp3.*
不适用于 Node.js12.*
或更高版本。你必须降级 Node.js,或者升级 Gulp。
如果时间不够,可以将 Node.js 降级到 v11.* 或以下;如果您需要更新的功能,并且有时间修复大量损坏的依赖项,请将 Gulp 升级到 4.* 或更高版本!
正如其他人已经提到的,Node.js 12 或更高版本不支持 Gulp 3.*,因此您必须将 Node 版本降级到 11.* 或更低版本,或者将 Gulp 升级到 4.0。
最好的选择最终取决于你有多少时间,因为升级 Gulp 带来了更干净的 gulpfiles 和对让任务串行或并行运行的内置控制的好处,但也依赖于你将 gulpfile 重写为新的语法,并且可能(阅读:可能会 - 请参阅此评论的结尾)会导致与某些依赖项发生冲突。
这是最简单、最快捷的选择。特别是如果您使用n或nvm,因为它们允许您非常快速地安装和在 Node.js 版本之间切换。
n 10.16.0
Run Code Online (Sandbox Code Playgroud)
nvm install 10.16.0
Run Code Online (Sandbox Code Playgroud)
一旦你做到了这一点,你可能需要重建NPM的依赖或可选择地同时删除你的node_modules
文件夹和您的package-lock.json
文件,并重新安装你的依赖。不过,如果您只是恢复到预先存在的 Node.js 版本,那么您应该没问题。
如上所述,这是一项更耗时的任务,但从长远来看可能会带来好处。例如,Node.js 12 现在引入了对 ES 模块的原生支持(在一个实验性标志后面)和 Node.js 13 中的完全支持。
您可能需要升级 Node.js 才能使用它,从而迫使您升级 Gulp。或者您可能只是想要使用 Gulp 4 的好处,因为它提供了对编写任务的更好和更有效的控制。
已经有很多关于这方面的文章,所以我不会再详细说明具体细节,但要重申 -这不是一项快速的工作。根据项目的大小,可能需要一些值得注意的重写,并且您可能有依赖关系中断。如果您的时间不够用,您应该选择简单地降级 Node.js,至少是暂时降级。
如果像我一样,您已经在使用 Gulp 4+(我使用的是 Gulp 4.0.2
,最初在 Node.js 10 上)并且最近升级(我升级到 Node.js 13.8.0)您仍然遇到问题,它可能是因为依赖项依赖于旧版本的 Gulp,而这正被困在管道中。
就我而言,gulp-combine-mq
是使用 Gulp 3.9.* 的依赖项。在我的 gulpfile 中禁用此任务允许 Gulp 再次运行。
如果发生这种情况,您有几个选择。你可以,
不用说,如果你有几个依赖旧版 Gulp 的插件——尤其是如果这些插件对你的应用程序至关重要——这就是升级 Gulp 可能花费大量额外时间的地方(因此出现上面的警告) .
如果发生这种情况,最好只降级 Node.js,至少在补丁发布之前。
Leh*_*tis 12
对我来说,Diego Fortes 的回答只需一个小小的改动即可。
如果出现此错误,这是我的工作流程:
npm install
npm install gulp
创建文件NPM-shrinkwrap.json与
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
npm install
(再次)(不再npm install gulp
!非常重要 - 否则错误会回来)
吞咽(现在工作)
Rav*_*and 11
有同样的错误,终于修复程序更新的包时,然后提到的同一节点引擎版本和故宫的版本中package.json
,因为它是在我的本地工作系统。
"engines": {
"node": "10.15.3",
"npm": "6.9.0"
}
Run Code Online (Sandbox Code Playgroud)
在heroku上部署时出现此错误。
以获得更多结帐Heroku支持
小智 10
使用以下命令进行安装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
Run Code Online (Sandbox Code Playgroud)
将解决此问题:
ReferenceError: primordials is not defined in node
Run Code Online (Sandbox Code Playgroud)
如果问题不是从那gulp
以后检查unzip npm 模块。距离上次更新已经过去了大约六年。它不适用于 Node.js > v11。
尝试这个:
npm install -g n
sudo n 11.15.0
Run Code Online (Sandbox Code Playgroud)
小智 9
我仅在 Visual Studio 的任务运行程序资源管理器中出现该问题,从命令行或 PowerShell 运行时则未出现该问题。
我意识到 VS 忽略了我使用NVM设置的 Node 版本。
这篇文章给出了答案:Configure which NPM is use by Visual Studio's Task Runner Explorer? 通过将PATH变量设置为比 VS 中的外部工具更高的优先级,它使用 NVM 设置的 Node 版本,而不是随 VS 安装的版本。
在使用的旧项目中,我们遇到了相同的问题gulp@3.9.1
。解决方法是强制graceful-fs@4.2.2
使用包含以下内容的npm-shrinkwrap.json
文件:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后执行npm install
将更新npm-shrinkwrap.json
文件。请注意,这不是长期的解决方案,但是在您没有时间更新到时会有所帮助gulp@^4.0.0
。
降级为节点稳定版为我解决了此问题,因为在升级到节点12之后发生了此问题
sudo n 10.16.0
检查 Node.js 版本:
node --version
Run Code Online (Sandbox Code Playgroud)
检查 gulp 版本:
gulp -v
Run Code Online (Sandbox Code Playgroud)
如果 Node.js >=12 且 gulp <= 3,请执行以下操作之一:
sudo npm install -g gulp
Run Code Online (Sandbox Code Playgroud)
sudo npm install -g n
sudo n 11.15.0
Run Code Online (Sandbox Code Playgroud)
这个错误是由于新版本的 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
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,我们还必须更新gulpfile.js
如下:
参考:Gulp 4:新的任务执行系统 - gulp.parallel 和 gulp.series、迁移
前:
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']);
}
);
Run Code Online (Sandbox Code Playgroud)
后:
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'));
}
);
Run Code Online (Sandbox Code Playgroud)
小智 5
我遇到了同样的问题。我尝试过的以及对我有用的:
检查Node.js和Gulp.js的版本(Node.js v12 和 Gulp.js 小于 v4 的组合不起作用)
我通过以下方式降级了 NPM 版本:
sudo NPM install -g n
sudo n 10.16.0
Run Code Online (Sandbox Code Playgroud)
效果很好。然后只需按照控制台的说明进行操作即可。
归档时间: |
|
查看次数: |
102301 次 |
最近记录: |