我已经在一个node.js项目上工作了几个星期,它一直工作得很好。通常,我使用npm start来运行我的应用程序,并在localhost上的浏览器中查看它,端口3000。

今天,我在使用npm start时开始得到以下错误:

Server started on port 3000                                                                                                                                                                                         
Port 3000 is already in use 

我已经检查了资源监视器,我没有在端口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'));
});

谢谢你的帮助!


编辑:

我已经尝试运行netstat和TCPView来检查哪个进程正在使用该端口,但是没有使用该端口。我也尝试重新启动我的笔记本电脑,但我仍然得到同样的错误。


当前回答

打开命令提示符,首先运行以下命令:

netstat -ano | findstr :7001

然后执行以下命令:

taskkill /PID 2820 /F

其他回答

只是想提一个已经给出的答案没有涵盖的问题。它与Hyper-V(和Docker)有关“窃取”端口:

摘自Docker问题(链接如下):

禁用hyper-v(这需要重新启动几次)

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

当您完成所有必需的重新启动时,保留您想要的端口,这样hyper-v就不会再保留它

netsh int ipv4 add excludedportrange protocol=tcp startport=3000 numberofports=1

重新启用hyper-V(这需要重新启动几次)

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

https://github.com/docker/for-win/issues/3171#issuecomment-459205576

我在Windows上使用Git Bash时遇到了这个问题。我运行npm start,或者node app.js。在用Ctrl+C终止它之后,并尝试使用npm start或node app.js再次启动服务器,然后我得到这个错误消息。

然而,当我使用常规的Windows命令提示符执行此操作时,它工作得很好。

或者你可以用另一种方法。打开任务管理器,找到“Node.js:服务器端JavaScript”行。选择并结束任务。现在应该可以了。

谢谢。

在我的情况下,我刚刚开始使用VS Code,并遵循了使用Sequelize的教程。 最后,我有一个bin/www文件,其中有listen()。 我不知道这一点,我通过运行节点app.js来运行我的应用程序,当它不起作用时,我用.listen()(这工作得很好)添加了快速服务器的东西。

但是当开始使用nodemon和VSCode时,它被指向bin/www,这需要我的app.js。

长话短说,我已经添加了.listen()到我的app.js,并在我不应该添加并运行bin/www时直接运行app.js。

自从我找到解决方案后,我今天就面临着同样的问题。

这个问题是因为有节点服务正在后台运行,即使没有恶魔重启。

我想过很多答案,但都有多种命令。 这是我为我的案子找到的简单命令

sudo pkill node

这将终止该节点上所有正在运行的进程,您的nodemon将开始正常工作。

回复晚了,但可能会有帮助:

在我的例子中,没有任何东西使用端口3000(与OP相同,但所有的答案都是关于杀死使用该端口的进程——这没有帮助)。

然而,在任务管理器中,我们运行的两个node.exe副本,即使我杀死它们,也会重新启动。如果你在任务管理器中右键单击node.exe,你会看到这些进程在哪里运行。对我来说,原来Adobe Creative Cloud打包了自己的node.exe,这给我带来了问题。重命名文件(因为我没有使用云服务)对我来说很有用。