Gulp 和 Coffeescript - 信号异步完成警告
Gulp and Coffeescript - signal async completion warning
系统配置:
/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
文档,似乎语法正确。
我是 gulp
和 coffeescript
的新人,但我相信由于消息的缘故,我在那里遗漏了一些东西。
问题是:
如何解决这个问题?
[03:09:58] The following tasks did not complete: default
[03:09:58] Did you forget to signal async completion?
P.S.
关于留言
[03:09:58] Requiring external module coffeescript/register
我尝试使用参数启动它(遵循一些建议),但结果相同:
$ gulp --require coffeescript/register
P.S.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
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
系统配置:
/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
文档,似乎语法正确。
我是 gulp
和 coffeescript
的新人,但我相信由于消息的缘故,我在那里遗漏了一些东西。
问题是:
如何解决这个问题?
[03:09:58] The following tasks did not complete: default
[03:09:58] Did you forget to signal async completion?
P.S.
关于留言
[03:09:58] Requiring external module coffeescript/register
我尝试使用参数启动它(遵循一些建议),但结果相同:
$ gulp --require coffeescript/register
P.S.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
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