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


当前回答

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

其他回答

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

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

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

sudo pkill node

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

Try opening the localhost in your browser. Just type: localhost:3000 in the address bar. If the app opens-up, it means your previous npm run is still active. Now, you can just make changes to the code and see the effects if you are designing the same app, or if you wanna run another app, just tweak the code (in index.js of previously running app) a little-bit and (probably refresh the browser tab) to make it crash ;)..... Now go run npm run start again from your new app directory. Hope this helps! :)

or

你可以打开任务管理器(WINDOWS_KEY+X >任务管理器),你会看到“Node.js:服务器端JavaScript”行。选择它并结束任务....现在应该可以工作了!!

如果不是,将应用程序的.env文件更改为包含端口:3002并运行新应用程序。这将允许您在不同的端口上运行两个独立的应用程序。干杯! !

它可能是在后台运行的管理进程,netstat没有显示这一点。 使用任务列表| grep节点找到这个管理进程的PID,然后杀死PID

这种情况有时会发生在我身上,使用EADDR。通常有一个终端窗口隐藏在后台,仍在运行应用程序。你可以在终端窗口中用ctrl+C停止进程。

或者,由于copy/pasta =),你可能会多次监听端口。

在linux中很简单

打开终端 进程中的空闲端口 -> kill $(lsof -t -i:$port)