微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用不同的服务器实例运行 Hapi Lab 实验

如何解决使用不同的服务器实例运行 Hapi Lab 实验

我正在更新一个库以使用最新的 Hapi 库,包括 Lab。使用旧版本的 Lab,我能够运行两个 experiment,每个都有自己的 Hapi.server 实例,并且都使用端口 3000。然而,新版本的 Lab 要么完成得太快,要么异步运行,导致第二个实验出现“端口正在使用”错误

var lab = exports.lab = Lab.script();
var routes = [{...},{...},{...}];

lab.before(async () => { ... });

lab.experiment('experiments',() => {

    lab.experiment('experiment 1',() => {

        var server;

        lab.before(() => {
          server = Hapi.server({ port: 3000 });
          return server.start();
        });

        lab.test('test 1.1',async () => {
            return server.register(Plugin)
            .then(() => server.route(routes))
            .catch((error) => console.log(error));
        });

        lab.experiment('experiment 1.1',() => {
            lab.test('test 1.1.1',async () => {
                const response = await server.inject({...});
                Code.expect(response.result)...;
            });

            lab.test('test 1.1.2',async () => {
                const response = await server.inject({...});
                Code.expect(response.result)...;
            });
        });
        
    });

    lab.experiment('experiment 2',() => {

        var server;

        lab.before(() => {
          server = Hapi.server({ port: 3000 });  
          return server.start();
        });

        lab.test('test 1.1',async () => {
            return server.register([{...},{...}])
            .then(() => server.route(routes))
            .catch((error) => console.log(error));
        });

        lab.experiment('experiment 2.1',() => {
            lab.test('test 2.1.1',async () => {
                const response = await server.inject({...});
                Code.expect(response.result)...;
            });
            lab.test('test 2.1.2',async () => {
                const response = await server.inject({...});
                Code.expect(response.statusCode)...;
            });
        });
    });
});

第二个实验失败:

listen EADDRINUSE: address already in use 0.0.0.0:3000
      at Server.setupListenHandle [as _listen2] (net.js:1318:16)
      at listenInCluster (net.js:1366:12)
      at doListen (net.js:1503:7)
      at processticksAndRejections (internal/process/task_queues.js:81:21)

There were 1 test script error(s).

将端口更改为 3001 解决了问题,但我想知道 Lab 发生了什么变化,以及我可以进行哪些更改以使两个服务器实例可以使用相同的端口。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。