我已经通过“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

当前回答

对我来说,使用series()组合任务后,问题就解决了。

这里的任何答案都没有解决问题。

其他回答

降级到Node.js稳定版为我解决了这个问题,因为它发生在我升级到Node.js12之后:

sudo n 10.16.0

解决问题的步骤:

我已通过以下步骤解决了问题:

安装NVM使用命令nvm install lts/dubnium安装lts/dubinium使用命令nvm install lts/dubnium使用lts/dubinium

现在你可以大口大口地展开了。

这个错误是因为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'));
    }
);

由于我的项目使用的是gulf版本4,所以我必须执行以下操作来解决这个问题

删除文件夹node_modules打开package.json并更新版本

以下是我使用的版本的详细信息

现在运行npm-install,然后运行gulp-default。错误应该消失了,您可能会看到:

从未定义任务:仅默认。

我建议您首先确保NPM安装不是您的问题。然后降级Node.js和Gulp.js版本。我使用了Node.js 10.16.1和Gulp.js 3.9.1。

要降级Gulp.js安装,您可以尝试:

npm install gulp@^3.9.1