node本地服务启动报Error: listen EADDRINUSE

在启动一个本地静态服务的时候报了这个错误?如何解决?

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: listen EADDRINUSE
    at exports._errnoException (util.js:746:11)
    at Server._listen2 (net.js:1129:14)
    at listen (net.js:1155:10)
    at Server.listen (net.js:1240:5)
    at Function.app.listen (/usr/local/lib/node_modules/anywhere/node_modules/connect/lib/proto.js:183:24)
    at Object.<anonymous> (/usr/local/lib/node_modules/anywhere/bin/anywhere:76:5)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
阅读 71.6k
11 个回答

找到原因了。。是同时开了另外一个进程

ps | grep node
kill <id>

EADDRINUSE 写成这样 E ADDR IN USE 应该就好理解了

我的解决方式是找到占用该端口的进程然后杀死该进程,具体操作参考该文章:
Windows Bash 查找端口占用和杀死进程

简单总结下就是:

# 命令行工具使用的是 bash
netstat -ano|findstr "8080" # 找到占用8080端口的进程,获得它的PID
tskill 1234 # 通过PID杀死该进程

sudo lsof -i:8080
查看端口占用情况如下:
Password:
COMMAND PID
node 28614
继续
kill 28614

端口被占用,先杀死原端口.在npm run dev

pkill node

端口冲突,定义一个新的端口就好了

看到上面很多说删掉那个进程或者换个端口

可是我想一直用那个端口呢,只是改了下配置

ctrl+c 在启动,报错,然后去杀进程或者改端口,不是很麻烦吗

process.on('uncaughtException', function(err) {
console.log(err);
});

如果加入异常的捕获处理,能更好的给出错误信息,个人不喜欢看一条信息。

EADDRINUSE这个错误的意思:地址已经被使用了。
@Fakefish 大大。。。。

刚刚也是遇到这个问题,这个错误说明正在监听的这个端口已经被使用,导致了冲突。

解决办法:
①换一个端口监听
②将这个冲突的端口换了

新手上路,请多包涵

图片描述

修改端口号

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题