【问题标题】:Gulp and Coffeescript - signal async completion warningGulp 和 Coffeescript - 发出异步完成警告
【发布时间】:2020-08-30 09:19:08
【问题描述】:

系统配置:

/gulp-demo$ gulp -v
CLI version: 2.2.0
Local version: 4.0.2
/gulp-demo$ node -v
v12.4.0
/gulp-demo$ npm -v
6.14.1

项目配置

package.json配置

{
  "name": "gulp-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "coffeescript": "^2.5.1",
    "gulp": "^4.0.2",
    "gulp-clean": "^0.4.0",
    "gulp-coffee": "^3.0.3",
    "gulp-connect": "^5.7.0",
    "gulp-jade": "^1.1.0",
    "gulp-requirejs": "^1.3.0",
    "gulp-stylus": "^2.7.0",
    "gulp-uglify": "^3.0.2"
  }
}

gulpfile.coffee配置:

gulp = require 'gulp'

gulp.task 'default', ->
    console.log 'Hello world!'

没有别的了。 确定执行 gulp 任务:

/gulp-demo$ gulp
[03:09:58] Requiring external module coffeescript/register
[03:09:58] Using gulpfile ~/Development/projects/web/my/gulp-demo/gulpfile.coffee
[03:09:58] Starting 'default'...
Hello world!
[03:09:58] The following tasks did not complete: default
[03:09:58] Did you forget to signal async completion?

我了解语法不正确,验证coffeescript 文档,似乎语法正确。

我是gulpcoffeescript 的新手,但我相信因为消息而错过了一些东西。

问题是:

如何解决问题?

[03:09:58] The following tasks did not complete: default
[03:09:58] Did you forget to signal async completion?

附言

关于消息

[03:09:58] Requiring external module coffeescript/register

我尝试使用参数启动它(遵循一些建议),但结果相同:

$ gulp --require coffeescript/register

附注 2。

如果我从gulpfile.js 文件中尝试gulp - 一切都是正确的:

function defaultTask(cb) {
  console.log('Hello gulp!');
  cb();
}

exports.default = defaultTask

控制台结果是:

gulp-demo$ gulp
[03:44:40] Using gulpfile ~/Development/projects/web/my/gulp-demo/gulpfile.js
[03:44:40] Starting 'default'...
Hello gulp!
[03:44:40] Finished 'default' after 1.3 ms

【问题讨论】:

    标签: configuration gulp coffeescript


    【解决方案1】:

    Gulp task 必须是async 函数或在完成时调用回调函数。

    gulp.task 'default', (done) ->
      console.log 'Hello world!'
      done()
    

    或者如果你有任何需要等待的异步函数,在coffeescript中如果一个函数包含await,它也会自动变成async。然后 gulp 将等待它被解决。示例:

    gulp.task 'default', () ->
      console.log 'Hello world!'
      await new Promise (resolve, reject) => 
        setTimeout 
            resolve() 
        , 1000 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多