我已经在一个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, 任务管理器肯定会显示正在运行的节点进程。 尝试终止进程,它将解决问题。

其他回答

在包中。Json脚本包括:

"start": "nodemon app.js --delay 1500ms"

我相信对我来说,问题是旧端口没有被nodemon及时关闭重新启动。我在使用multer时遇到了这个问题。

确保在hosts文件中配置了localhost

127.0.0.1       localhost

https://github.com/facebook/create-react-app/issues/2843

来自谷歌的High Sierra解决方案。

macos的网络设置发生了变化,一些应用程序(包括ping)无法解析localhost。

编辑/etc/hosts似乎是一个解决方案:

命令:sudo nano /etc/hosts/ 内容127.0.0.1 localhost

或者简单地说(如果你确定/etc/hosts是空的) 必须回显“127.0.0.1 localhost”> /etc/hosts

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

当命令中没有列出任何任务时,就会发生这种情况

lsof -i:3000

还是会得到一个错误

Error: listen EADDRINUSE: address already in use 0.0.0.0:3000

一个原因是在Nginx conf.d检查中,没有任何配置在端口3000上监听