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

Running node project a second time takes a long time to load (On Windows 10)

本文关键字:加载 Windows 项目 节点 运行 长时间 第二次      更新时间:2023-09-26

我一直试图在谷歌上找到这个问题,但没有发现类似的问题。此外,我可以确认这不是该项目的错,因为在Ubunstu虚拟机中运行它每次都能完美地工作。

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

对此有什么想法吗?

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

我意识到问题不是节点启动,而是快速关闭。端口无法正常关闭,即使它不会显示在netstat中。正因为如此,当我尝试用express做server.close()时,它什么都做不了。从谷歌上的一个老问题中,我发现这是因为express破坏了套接字,所以我最终手动完成了。这就是我的代码解决这个问题的方式:

 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);
});