gpt4 book ai didi

node.js - 在 express 项目中使用 wallaby.js 时避免使用 EADDRINUSE

转载 作者:搜寻专家 更新时间:2023-10-31 23:02:01 25 4
gpt4 key购买 nike

我在客户端 JavaScript 上使用 wallaby.js 非常幸运,我想尝试让它在我的服务器端 JavaScript 上运行。但是,wallaby.js 喜欢启动大量并行 Web 服务器,这会导致测试出现问题,因为它会不断抛出 EADDRINUSE 错误。

我的项目的基本脚手架是用 Yeoman 完成的 angular-fullstack generator ,所以我的服务器代码位于 /server 中,大多数方法都位于 /server/api 中。

到目前为止,我已经设法让它可以使用以下配置:

module.exports = function () {
return {
files: [
'server/**/*.js',
{ pattern: 'server/**/*.spec.js', ignore: true }
],

tests: [
'server/**/*.spec.js'
],

env: {
type: 'node',

},

debug: true,
workers: {
initial: 1,
regular: 1,
recycle: false
}
};
};

在这里你可以看到我将 wallaby worker 的数量设置为 1,并且不允许它回收 worker。第一次运行良好,但在我开始编辑文件后,我偶尔会遇到 EADDRINUSE 错误。

是否有一种首选机制可以将 wallaby.js 与 express 一起使用并避免它在同一端口上生成多个测试服务器进程,从而消除 EADDRINUSE 错误?

最佳答案

这个名字有点令人困惑,但是 recycle: true 可以解决问题。 recycle: false 表示一旦启动 Node 进程将永远重复使用。

我知道使用并行进程并不总是可行的(尤其是数据库测试),但要使其适用于 Web 服务器,您可以在运行测试时指定 0 作为端口,这样它会随机选择并使用一个。

  var server  = require('http').createServer();
server.listen(0);

这样 wallaby 将能够并行运行您的测试并重用流程。

关于node.js - 在 express 项目中使用 wallaby.js 时避免使用 EADDRINUSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30178023/

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