我一直试图在Google上发现这个问题,但我没有找到类似的东西。此外,我可以确认这不是项目的错误,因为在Ubunutu VM中运行它每次都能完美运行。
我将运行node index.js
,项目会在几秒钟内立即加载。然而,一旦我关闭它(使用Ctrl-C)并再次运行node index.js
,项目将永远完全启动。加载通常需要大约一分钟(这使得调试非常糟糕)
有关于此的任何想法?
答案 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);
});