我正在尝试创建一个gulp任务,它会旋转3个Browsersync实例,使用Protractor对它们运行端到端测试,然后很好地关闭Browsersync实例。
到目前为止,我已经提出了以下解决方案:
// avoid property lookups using local vars
int werteLength = arrWerte.length - 2;
float[][] localArrWerte = arrWerte;
for(int inde = 0; inde <= werteLength; inde++) {
float[] xy = arrWerte[inde];
float[] xyII = arrWerte[inde + 1];
canvas.drawLine((xy[0], xy[1], xyII[0], xyII[1], fc);
}
这里的问题是/**
* Run the end-to-end tests using Protractor.
*/
gulp.task('test:protractor', [
'serve:user',
'serve:bootstrap',
'serve:website'
], function(done) {
var protractor = spawn('protractor', [
path.resolve(__dirname, '..', 'protractor.conf.js'),
'--suite=bootstrap',
'--param.host.user', 'http://' + util.getDockerIp() + ':' + serve.userServer.getOption('port'),
'--param.host.bootstrap', 'http://' + util.getDockerIp() + ':' + serve.bootstrapServer.getOption('port'),
'--param.host.website', 'http://' + util.getDockerIp() + ':' + serve.websiteServer.getOption('port')
], {stdio: 'inherit'});
protractor.on('close', function(code) {
if (code) {
throw new Error(chalk.red('End-to-end tests failed'));
}
serve.userServer.exit();
serve.bootstrapServer.exit();
serve.websiteServer.exit();
done();
});
});
。在内部调用xxxServer.exit()
,关闭整个NodeJS实例。这样我就无法很好地关闭每个服务器并让gulp处理其余的服务器。
我无法找到任何关于以任何其他方式关闭Browsersync的信息,因此我查看了process.exit()
函数,如下所示:
exit
所以我尝试手动进行清理而不调用function exit() {
if (browserSync.active) {
browserSync.events.emit("service:exit");
browserSync.cleanup();
}
process.exit();
}
process.exit()
这仍然会阻止NodeJS实例关闭。
是否可以在不调用serve.userServer.instance.events.emit('service:exit');
serve.userServer.instance.cleanup();
serve.bootstrapServer.instance.events.emit('service:exit');
serve.bootstrapServer.instance.cleanup();
serve.websiteServer.instance.events.emit('service:exit');
serve.websiteServer.instance.cleanup();
的情况下关闭Browsersync实例?