gpt4 book ai didi

javascript - gulp.watch 导致 "task completion callback called too many times"

转载 作者:行者123 更新时间:2023-11-28 05:49:11 29 4
gpt4 key购买 nike

当我更改文件(例如 HelloWorld.js)时,我想使用 Karma 运行特定的测试套件(称为 HelloWorldSpec.js)。

因此我创建了这个 Gulp 任务:

gulp.task('dev', function(done) {
// Watch source code changes
gulp.watch('src/**/*.js').on('change', function(file) {

// Assemble path to test file
var pathObject = path.parse(file.path);
var specificationPath = 'test/' + pathObject.name + 'Spec.js';

// Run test file
new Server({
configFile: __dirname + '/karma.conf.js',
files: [
'dist/**/*.js',
specificationPath
],
singleRun: true
}, done).start();
});
});

我现在遇到的问题是我将 done 回调传递给 Karma 服务器,该服务器在每次测试运行后执行它。因此,我在第二次源代码修改(以及以下每一个)时收到以下错误:

Error: task completion callback called too many times

如果我不将 done 回调传递给 Server,那么我的 Gulp 任务将在第一次测试运行后结束。但我想继续关注源代码的修改。我怎样才能做到这一点?

最佳答案

我也遇到了同样的问题。我偶然发现了这个linkthis这确实有效。

gulp.task('test', function (done) {
var server = new Server({
configFile: __dirname + '/karma.conf.js',
singleRun: true
});

server.on('browser_error', function (browser, err){
gutil.log('Karma Run Failed: ' + err.message);
throw err;
});

server.on('run_complete', function (browsers, results){
if (results.failed) {
throw new Error('Karma: Tests Failed');
}
gutil.log('Karma Run Complete: No Failures');
done();
});

server.start();
});

希望这对您有帮助!

关于javascript - gulp.watch 导致 "task completion callback called too many times",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38228915/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com