在 AWS Codebuild 上开玩笑 运行 时不关闭()ing expressjs 服务器
Jest not close()ing expressjs server when run on AWS Codebuild
当我 运行 本地 jest 正常退出时,但是当 运行 在 codebuild 上 jest 不会退出并给出此错误:
Jest has detected the following 1 open handle potentially keeping Jest from exiting:
● TCPSERVERWRAP
13 | routes(app)
14 |
> 15 | app.listen(port, async err => {
这两种变体都可以在本地工作,但不能在代码构建上工作:
afterAll((done) => {
if (app) {
app.close(done);
}
})
afterAll(async () => {
if (app) {
await app.close()
}
})
使用 process.exit(0)
没有帮助
好的,有点业余错误。当我包装 app.close()
调用时,结果发现它是未定义的。我试图 运行 关闭 express request
对象。我必须从实例化 express 的地方导出服务器对象:
afterAll(async () => {
try {
await server.close()
} catch (error) {
console.error(error)
throw error;
}
})
const app = express()
routes(app)
const server = app.listen(port, async err => {
...
module.exports = app
module.exports.server = server
当我 运行 本地 jest 正常退出时,但是当 运行 在 codebuild 上 jest 不会退出并给出此错误:
Jest has detected the following 1 open handle potentially keeping Jest from exiting:
● TCPSERVERWRAP
13 | routes(app)
14 |
> 15 | app.listen(port, async err => {
这两种变体都可以在本地工作,但不能在代码构建上工作:
afterAll((done) => {
if (app) {
app.close(done);
}
})
afterAll(async () => {
if (app) {
await app.close()
}
})
使用 process.exit(0)
没有帮助
好的,有点业余错误。当我包装 app.close()
调用时,结果发现它是未定义的。我试图 运行 关闭 express request
对象。我必须从实例化 express 的地方导出服务器对象:
afterAll(async () => {
try {
await server.close()
} catch (error) {
console.error(error)
throw error;
}
})
const app = express()
routes(app)
const server = app.listen(port, async err => {
...
module.exports = app
module.exports.server = server