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


当前回答

在运行nodemon之前,请先启动mongod。您永远不会得到这个错误。

其他回答

我已经解决了这个问题,因为MongoDB或有另一个应用程序,你之前在这个端口上运行它, 为了解决这个问题,从任务管理器中关闭进程, 或者将端口的编号从3000更改为任何其他端口。

这很简单。你可以用2个简单的步骤来修复它。

如果有名为“PORT”的键/项,请检查环境变量。 如果发现,删除该条目或将其重命名为其他内容。

结果是其他程序在使用这个变量。通常当你启动react-scripts时,它会寻找一个标题为PORT的环境变量。

我花了2个小时来找出为什么EADDRINUSE不允许我sart一个应用程序(其他node-express服务器是可以的)…它在添加后开始工作 lazyConnect:没错, 到数据源配置。

别问我为什么有用。我不知道。我把这个信息放在这里,只是为了给有同样问题的人。

今天我中断了进程,更改了节点版本,就发生了这种情况。 为了解决这个问题,我只是重新启动了我的计算机,因为没有PID显示使用端口。

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

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