【问题标题】:Why am I getting an assertion error with my gulp 4 gulp.js为什么我的 gulp 4 gulp.js 出现断言错误
【发布时间】:2018-11-18 01:29:08
【问题描述】:

我正在尝试在 Windows 7 上运行 gulp。

我已经下载了npm (6.4.1)

已安装gulp(CLI version 3.9.1 , Local version 4.0.0)

我已经完成了主题文件中的npm init

但我明白了

assert.js:351 抛出错误; ^ AssertionError [ERR_ASSERTION]: 必须指定任务函数

看到类似的错误,我决定将 gulp.js 更改为:

gulp.task('browser-sync', ['sass'], function() {
    browserSync.init({
        proxy: "local.mysite.co:8080",
        notify: true
    });
});

到:

gulp.task('browser-sync', gulp.series( 'sass', function() {
    browserSync.init({
        proxy: "local.mysite.co:8080",
        notify: true
    });
}));

但我现在明白了:

assert.js:351 抛出错误; ^ AssertionError [ERR_ASSERTION]:任务从未定义:sass

【问题讨论】:

  • 我切换到 gulp@3.3.4 并且它运行了。我只是不确定为什么 gulp.js 对 gulp 4.x 的更改不起作用。
  • 必须先定义您的“sass”任务,然后才能在“浏览器同步”任务中调用它。我敢打赌这就是问题所在。
  • 任何更新,我在评论中的建议有帮助吗?

标签: npm gulp gulp-sass


【解决方案1】:

通常,从 gulp3 迁移到 gulp4 时出现错误 Task never defined: 表示您在注册之前调用了一个任务。

就你而言,我敢打赌,下面的“browser-sync”任务是在“sass”任务之前定义的。

gulp.task('browser-sync', gulp.series( 'sass', function() {

只需将您的 gulp.task('sass', ………) 移动到“browser-sync”任务之前即可。

或者换成新的函数表示法,比如:

function sass() {
  return gulp.src(paths.sass.stylesFile)
    .pipe(sass().on("error", sass.logError))
    .pipe(gulp.dest(paths.css.temp))
    .pipe(reload({ stream: true }));
}

而且顺序不是问题。但是,如果您走这条路,还需要进行其他更改。没有必要这样做 - 你可以像我上面提到的那样移动你的 sass 任务。

【讨论】:

    【解决方案2】:

    删除了项目文件夹中的 node_modules 文件夹。在终端(在项目文件夹中)运行:

    npm install gulp --save-dev .   
    

    现在可以了

    【讨论】:

    • 当你在命令行上运行“gulp -v”你会得到什么?
    • postcss-playground gulp -v [11:15:04] CLI version 2.0.1 [11:15:04] Local version 3.9.1
    • 是的,您正在运行 gulp 版本 3.9.1。 OP 的语法适用于 3.9.1 但不适用于 4。
    猜你喜欢
    • 2022-11-10
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2023-04-04
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多