在AWS Codebuild上运行时,开玩笑不会关闭ExpressJS服务器

时间:2019-02-08 19:38:14

标签: node.js express testing jestjs aws-codebuild

当我在本地运行时,jest可以退出,但是在codebuild上运行时,jest不会退出并给出此错误:

  

Jest已检测到以下1个打开的句柄,有可能阻止Jest退出:

     

●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)无济于事

1 个答案:

答案 0 :(得分:1)

好的,有点业余错误。当我包装app.close()调用时,结果表明它是未定义的。我试图在快速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