我已经通过“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'));
}
);
对于在ADOS CI Build中由于相同原因出现相同错误的任何人:
这个问题是我在寻求帮助时发现的第一个问题。我有一个ADOS CI构建管道,其中第一个Node.js工具安装程序任务用于安装Node.js。然后,npm任务用于安装Gulp.js(npm install-g gulf)。然后,下面的Gulp.js任务运行gulpfile.js中的默认任务。
当我将Node.js工具更改为安装12.x最新节点而不是旧节点时,Gulp.js的最新版本为4.0.2。结果与问题中描述的错误相同。
在这种情况下,对我有用的是将Node.js降级到最新的11.x版本,正如Alphonse R.Dsouza和Aymen Yaseen所建议的那样。在这种情况下,虽然不需要使用他们建议的任何命令,但只需将Node.js工具安装程序版本规范设置为11.x的最新Node.js版本。
安装并运行的Node.js的确切版本是11.15.0。我不必降级Gulp.js。