ExpressJS - 抛出未处理的错误事件

JR *_*lia 176 node.js npm express

我使用以下命令创建了expressjs应用程序:

express -e folderName
npm install ejs --save
npm install
Run Code Online (Sandbox Code Playgroud)

当我使用:运行应用程序时node app.js,我有以下错误:

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: listen EADDRINUSE
    at errnoException (net.js:884:11)
    at Server._listen2 (net.js:1022:14)
    at listen (net.js:1044:10)
    at Server.listen (net.js:1110:5)
    at Object.<anonymous> (folderName/app.js:33:24)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
Run Code Online (Sandbox Code Playgroud)

怎么解决?

小智 397

您运行另一台服务器使用相同的端口,如8080.

也许你已经node app在其他shell中运行了,请关闭它并再次运行.

您可以查看PORT否.可用或不用

netstat -tulnp | grep <port no>
Run Code Online (Sandbox Code Playgroud)

  • 这种常见错误确实值得更好的错误消息. (52认同)
  • 我使用WebStorm来讨论这个问题.我在同一个工作区中打开了两个调试会话.卫生署! (4认同)
  • 非常,非常有用的错误消息. (2认同)

mon*_*cal 59

当我们有时运行我们的快递应用时,我们会收到类似的错 在这种情况下我们必须遵循相同的规则.我们需要检查它是否在任何终端运行.如果要查找并终止进程,请按照下列步骤操作:

  • ps aux | grep节点
  • 找到进程ID(左起第二个):
  • kill -9 PRCOCESS_ID

要么

使用单个命令关闭所有正在运行的节点进程.

ps aux | awk '/node/{print $2}' | xargs kill -9
Run Code Online (Sandbox Code Playgroud)

  • `ps aux | grep节点| awk'{print $ 2}'| xargs kill -9` (5认同)
  • 看看你是否有`killall`命令,更不用说打字了 (2认同)

Taw*_*abG 24

一个实例可能仍在运行.这将解决它.

killall node
Run Code Online (Sandbox Code Playgroud)

更新:此命令仅适用于Linux/Ubuntu和Mac.


Cau*_*ect 16

如果您使用的是Linux,如果Nodejs没有以root用户身份运行,也会出现此问题.

改变一下:

nodejs /path/to/script.js
Run Code Online (Sandbox Code Playgroud)

对此:

sudo nodejs /path/to/script.js
Run Code Online (Sandbox Code Playgroud)

刚发生在我身上,其他任何建议都没有修复.幸运的是我记得这个脚本在以root身份运行的前几天正在运行.希望这有助于某人!

免责声明:这可能不是生产环境的最佳解决方案.以root身份启动服务可能会给您的服务器/应用程序带来一些安全漏洞.在我的情况下,这是一个本地服务的解决方案,但我鼓励其他人花更多的时间来试图找出原因.


Abh*_*waj 12

这是因为您用于运行脚本的端口已在使用中.您必须停止使用该帖子的所有其他节点.为此,您可以检查所有节点

ps -e
Run Code Online (Sandbox Code Playgroud)

或仅用于节点进程使用ps -ef | grep node 这将为您提供具有id的所有节点进程的列表

杀死所有节点进程

sudo killall -9 node
Run Code Online (Sandbox Code Playgroud)

或者针对具体的id sudo kill -9 id


mar*_*han 8

我通过更改端口修复了错误

app.set('port', process.env.PORT || 3000);<br>
Run Code Online (Sandbox Code Playgroud)

并改为:

app.set('port', process.env.PORT || 8080);<br>
Run Code Online (Sandbox Code Playgroud)