我已经通过“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
这个错误是因为Node.js的新版本(12)和Gulp的旧版本(少于4)。
不建议降级Node.js和其他依赖项。我通过更新package.json文件,获取所有依赖项的最新版本来解决这个问题。为此,我使用npm检查更新。它是一个用所有依赖项的最新版本更新package.json的模块。
参考:https://www.npmjs.com/package/npm-check-updates
npm i -g npm-check-updates
ncu -u
npm install
在大多数情况下,我们必须更新gulpfile.js,如下所示:
参考:Gulp 4:新的任务执行系统-Gulp.parallel和gull.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^4.0时保持Node.js v12,请执行以下步骤:
使用以下命令更新命令行界面(仅供预防):
npm i gulp-cli -g
添加/更新package.json文件的gulpunderdependencies部分
"dependencies": {
"gulp": "^4.0.0"
}
删除package-lock.json文件。
删除node_modules文件夹。
最后,运行npm i升级并重新创建一个全新的node_modules文件夹和package-lock.json文件,其中包含Gulp^4.0的正确参数:
npm i
注意,Gulp.js 4.0引入了series()和parallel()方法来组合任务,而不是Gulp 3中使用的数组方法,因此您可能会或可能不会在旧的gulpfile.js脚本中遇到错误。
为了了解更多关于应用这些新功能的信息,本网站对其做了充分的介绍:如何迁移到Gulp.js 4.0