我已经在一个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来检查哪个进程正在使用该端口,但是没有使用该端口。我也尝试重新启动我的笔记本电脑,但我仍然得到同样的错误。


当前回答

对于windows, 任务管理器肯定会显示正在运行的节点进程。 尝试终止进程,它将解决问题。

其他回答

我也遇到了同样的问题。最好的解决方法是(对于windows):

进入任务管理器。 滚动并找到名为。 Node.js:服务器端JavaScript 结束这个特定的任务。

好了! 现在执行npm start,它将像以前一样工作!

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

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

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

我也见过同样的情况,尝试了上面所有的建议都没有成功。下面是我解决这个问题的几个步骤: -关闭wifi NPM启动(这应该可以工作) -打开wifi

我不太确定根本问题是什么,但这为我解决了问题。

通过输入命令检查在同一端口上运行的任何进程:

sudo ps -ef

您可以找到在各个节点端口上运行的进程,然后通过

kill -9 <node id>

如果问题仍然存在,那么就杀死所有节点

killall node

服务器或应用程序的listen()方法可以添加在两个位置。 中搜索listen()方法用于应用程序启动 这就是为什么它返回作为服务器启动端口XXXX和端口XXXX已经在使用消息并排出现