这很奇怪。
作为参考,我在Win 10上使用MinTTY Git Bash。此外,我的节点是版本v6.11.3
,我的npm是版本3.10.10
。另外,"express": "^4.16.1"
。
我从未遇到过快速服务器突然没有关闭的问题。我已经使用了一段时间,直到今天我才开始讨论这个问题。
我正常ctrl+c
关闭服务器并执行npm start
如果我做了任何更改。完成后,我收到EADDRINUSE错误。我用Google搜索并用Google搜索,最后确定我可以杀死它的唯一方法是使用tskill <pid>
。
我尝试了taskkill
,ps
,基本上我可以在Git Bash上使用其他所有解决方案。 tskill
是唯一有效的,并且使用netstat -a -o -n
查看流程列表及其PID。
在对错误处理和信号进行一些研究后,我确定应添加process.on('SIG<whatever>', system.exit(0));
行以允许进程完全退出。
我已尝试SIGINT
,SIGQUIT
,SIGKILL
,SIGUSR1
,SIGUSR2
,SIGSTOP
和SIGTSTP
。所有这些都会自动关闭进程,成功授予,但没有我的输入,因此服务器永远不会运行。
这是我的基本应用程序:
const express = require('express');
const app = express();
var config = require('./config')(process.env.NODE_ENV);
var appPort = process.env.PORT || config.port;
app.listen(appPort, function () {
console.log('UAction Test Server Running on Port ' + appPort + '!');
});
//process.on('SIGTSTP', console.log('Process Interrupted. Exiting...'), process.exit(0));
我真的不知道从哪里开始。让我知道您需要的任何信息。如果我尝试了某些内容并且它不起作用/确实有效,我会更新此主帖以供其他可能遇到此问题的人使用。
我想知道的是:a)如何阻止这种情况发生?或者如果没有,那么b)如何在我的应用程序中实现正确的关闭?
编辑:我尝试使用其他应用程序并执行相同的操作。
答案 0 :(得分:0)
Here is the issue on Node (even though it ended up not being Node's fault).
问题最终是 MinTTY 。我不知道为什么,但在安装Git时使用CMD使其工作完美无瑕。以下是我遇到此问题的人的设置:
使用默认控制台窗口(CMD)
启用文件系统缓存
(我明天会将此标记为答案,愚蠢的StackOverflow)