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


当前回答

如果只关闭一个端口,执行此命令即可。 Kill -9 $(lsof -t -i:3000)

pkill和kill的区别是某人在处理黏土。在kill中,你应用一个过滤器。你只要停你想停的端口。

pkill命令关闭所有节点进程。 Pkill -9节点

使用pkill可以避免在开发过程中偶尔发生的内存泄漏。如果有一个以上的节点,它会杀死所有的节点。

在包中使用脚本。Json也是一个例子。

"scripts": {
    "server:start": "cd server && yarn start",
    "server:restart": "cd server && yarn restart",
    "frontend:start": "cd frontend && yarn start",
    "frontend:restart": "kill -9 $(lsof -t -i:4200) && yarn start:frontend"
},
"scripts": {
    "start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts",
    "restart": "pkill -9 node && start",
    "kill": "pkill -9 node"
},

其他回答

如果您正在使用webstorm,请确保您的默认端口不是3000 从 文件->设置->构建,执行,部署->调试器 还有变化

内置服务器端口

设置为63342 或者看看这个答案 更改WebStorm LiveEdit端口(63342)

对于windows用户,只需简单地停止任务中的所有Node.js进程 经理

希望对大家有所帮助

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

sudo ps -ef

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

kill -9 <node id>

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

killall node

杀死所有运行的端口(mac):

killall node

在linux中很简单

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