我有这个奇怪的问题与gulp,这可能是由于我不知道如何真正使用它,但我没有取得任何进展,通过阅读文档。基本上,我正在开发一个应用程序,有3个不同的环境,和5个不同的模板,它应该呈现。这个图是这样的
default:
- env 1
- template 1
- template 2
...
- env 2
- template 1
- template 2
...
这意味着它正在动态地生成新任务(例如当一个新的模板被添加),但我总是有问题与异步完成。
无论我做什么调整,我总是得到“The following tasks did not complete”的错误(即使renderTemplate返回一个promise,但查看日志,它甚至从来没有被调用过...?)
有人能给我指个正确的方向吗?我做错了什么
我在操场上又试了一次,从头开始重写,我还是想不出为什么会这样。下面是我的示例代码:
const {
src,
dest,
series
} = require('gulp');
const {
setTimeout
} = require('timers/promises')
const env = ['1', '2', '3'];
const template = ['1', '2', '3'];
function renderEnv(info) {
console.debug('renderEnv', info);
const funcs = template.map(n => mod(renderTemplate, n));
return series(...funcs);
}
function renderTemplate(info) {
console.debug('renderTemplate', info);
}
// this mods params to bind with correct args while keeping the name
function mod(func, args, name) {
const argArray = Array.isArray(args) ? args : [args];
const newFunc = func.bind(null, ...argArray);
newFunc.displayName = name || func.name;
return newFunc;
}
function defaultFunc() {
const funcs = env.map(n => mod(renderEnv, n));
return series(...funcs)
}
exports.default = series(defaultFunc());
这里是错误:
Starting 'default'...
Starting 'renderEnv'...
renderEnv 1
The following tasks did not complete: default, <series>, renderEnv
Did you forget to signal async completion?
1条答案
按热度按时间cngwdvgl1#
在深入研究其他一些GitHub问题时,我终于明白了gulp并不期望任务返回另一个序列(也称为函数)。因此,我必须将renderEnv替换为:
这将像我想要的那样工作,并且执行日志也遵循我预期的图形。