我一直在使用node.js项目几个星期,它一直很好用.通常我使用'npm start'来运行我的应用程序,并在浏览器上的localhost,端口3000上查看它.
今天,我在使用npm start时开始出现以下错误:
Server started on port 3000
Port 3000 is already in use
Run Code Online (Sandbox Code Playgroud)
我检查了资源监视器,我没有在端口3000上运行其他进程.为什么我会收到此错误消息?
在我的app.js中,我有以下代码来设置端口......这是不正确的?它之前工作正常,所以我不确定我做错了什么.
// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
console.log('Server started on port '+app.get('port'));
});
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
编辑:我已经尝试运行netstat和TCPView来检查使用该端口的进程,但没有使用该端口.我也试过重启我的笔记本电脑,但我仍然得到同样的错误.
我试图了解如何在Windows XP上启动多个进程侦听相同的TCP {IP,Port}对.
例如,我可以启动两个ncat.exe程序监听端口371.第二个程序启动没有任何问题,并接收传入连接,而第一个没有.一旦最后开始的过程终止,第一个接收它们.
netstat -a -n | find "LISTENING"
TCP 0.0.0.0:371 0.0.0.0:0 LISTENING
TCP 0.0.0.0:371 0.0.0.0:0 LISTENING
Run Code Online (Sandbox Code Playgroud)
假设这是一种Windows(XP)行为,它如何成为一种安全可靠的行为?这意味着可以"重载"任何已经侦听的端口,而不是获取通常的"已使用的地址"错误消息,并简单地绕过防火墙,规则只是说"允许端口371上的任何传入TCP连接".