第二次运行节点项目需要很长时间才能加载(在Windows 10上)

时间:2015-12-12 23:50:03

标签: javascript node.js express

我一直试图在Google上发现这个问题,但我没有找到类似的东西。此外,我可以确认这不是项目的错误,因为在Ubunutu VM中运行它每次都能完美运行。

我将运行node index.js,项目会在几秒钟内立即加载。然而,一旦我关闭它(使用Ctrl-C)并再次运行node index.js,项目将永远完全启动。加载通常需要大约一分钟(这使得调试非常糟糕)

有关于此的任何想法?

1 个答案:

答案 0 :(得分:1)

所以,我找到了答案,我会在这里发布,因为这个问题几乎没有。

我意识到问题不是节点启动,而是表示关闭。端口无法正常关闭,即使它不会出现netstat。因此,当我尝试使用express执行server.close()时,它将无法执行任何操作。从Google上的一个老问题来看,我发现这是因为快速破坏套接字存在问题,所以我最终手动完成了。这就是我的代码解决此问题的方式:

 server.on('connection', function(socket){
    sockets.push(socket);
})

process.stdin.resume(); //so program doesn't close instantly

process.on('SIGINT', function(){

    sockets.forEach(function(socket) {
        socket.destroy();
    });

    server.close(function(){
        console.log("Express connection closed");
        process.exit();
    });

    setTimeout( function () {
        console.error("Could not close connections in time, forcefully shutting down");
        process.exit(1);
    }, 20*1000);
});