【问题标题】:ForeverJS getting EADDRINUSE errorForeverJS 收到 EADDRINUSE 错误
【发布时间】:2015-11-23 21:41:24
【问题描述】:

我是 Ubuntu 和 node express 的新手。但是我已经掌握了足够的知识,我能够使用 Forever 设置一个静态 Web 服务器,并在其旁边运行一个 REST API。我还成功安装了 Samba 以直接从我的 Windows 机器编辑文件。

大约一个月前,我启动并运行了我的静态网站。它上面有一个表单,对 REST API 服务执行 jQuery POST。使用 Forever,我运行了两个节点进程,一个用于静态网站服务,另一个用于 API 服务,两者都在同一个端口 80 上侦听。

一个月前一切正常,我可以加载静态网站并提交表单,然后我会通过我的 API 服务收到电子邮件通知。但大约一周前,一切都失败了,包括我的 Samba 文件共享。登录到我的服务器,“永久列表”为空。好的,所以我认为服务器必须在我不知情的情况下重新启动。然后我再次启动我的两个服务:

root@xxxxx:~/www/web/ourwedding# forever start staticserver.js
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: staticserver.js
root@xxxxx:~/www/web/ourwedding# forever start apiserver.js
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: apiserver.js

我永远运行列表:

root@xxxxx:~/www/web/ourwedding# forever list
info:    Forever processes running
data:        uid  command         script          forever pid id logfile                 uptime
data:    [0] IKkB /usr/bin/nodejs staticserver.js 469     471    /root/.forever/IKkB.log 0:0:0:26.307
data:    [1] APxV /usr/bin/nodejs apiserver.js    479     481    /root/.forever/APxV.log STOPPED

我看到错误并去检查一下:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EADDRINUSE
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1039:14)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1135:5)
    at EventEmitter.app.listen (/root/www/web/ourwedding/node_modules/express/lib/application.js:595:24)
    at Object.<anonymous> (/root/www/web/ourwedding/apiserver.js:69:18)
    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)
    at startup (node.js:119:16)
    at node.js:902:3
error: Forever detected script exited with code: 8

然后我花了接下来的几个小时试图弄清楚发生了什么。从我目前发现的情况来看,这个错误是因为我在同一个端口上运行这两个服务......但它之前工作正常吗?我必须在同一个端口上运行它们,因为我正在对同一个域进行 AJAX POST。

我尝试过的事情:

  1. 删除根目录下的 .forever 文件夹
  2. 重启服务器
  3. killall -9 nodejs

我没有尝试过的事情:

  1. 永远的不同解决方案
  2. 将我的静态 Web 服务器和 api 服务器组合成一个服务。

我想我只是想知道我是不是疯了,或者我是否在一个月前做了一些我一辈子都记不起来的事情,这让我可以在同一个端口上运行这两个服务。

欢迎任何帮助或建议。

谢谢。

【问题讨论】:

  • 我不熟悉 Forever... 你确定你正确地终止了服务器吗?我相信你知道,EADDRINUSE 表示该地址已被使用。
  • 重启系统,也许会有帮助。 EADDRINUSE 表示您的进程已经启动,您正在尝试重新启动。

标签: javascript node.js ubuntu express forever


【解决方案1】:

啊……答案是: 我的记忆是垃圾:-)

我决定我应该将我的两个服务合并为一个,当我浏览代码时,我注意到我已经将它们合并了!!!我真是个白痴。感谢那些试图提供帮助的人,但在这种情况下肯定是用户错误。

如前所述,抛出 EADDRINUSE 是因为两个服务都试图在同一个端口上侦听......我只是认为我已经以某种方式解决了它而没有合并我的文件。

【讨论】:

    猜你喜欢
    • 2020-09-17
    • 2017-06-02
    • 1970-01-01
    • 2015-04-28
    • 2017-07-28
    • 1970-01-01
    • 2020-12-28
    • 2017-12-31
    • 2015-12-22
    相关资源
    最近更新 更多