【问题标题】:Meteor (Meteorite) error: listen EADDRINUSE on port 3000, error: connect ECONNREFUSED on other portsMeteor (Meteorite) 错误:在端口 3000 上监听 EADDRINUSE,错误:在其他端口上连接 ECONNREFUSED
【发布时间】:2014-02-04 10:01:20
【问题描述】:

我在 OSX 上运行陨石(带有一个测试项目,所以错误不应该是由于我写的任何东西),当我在默认端口 3000 上运行时出现以下错误。我检查过,没有其他进程正在访问该端口。

event.js:72 投掷者; \ 未处理的“错误”事件 错误:听 EADDRINUSE 在 errnoException: (net.js:901:11) 在 Server._listen2 (net.js:1039.14) 在听 (net.js:1061:10) 在 net.js:1135:9 在 dns.js:72:18 在 process._tickCallback (node.js:415:13) 在 Function.Module.runMain (module.js:499:11) 启动时 (node.js:119:16) 在 node.js:901:3

当我尝试在我知道被占用的端口上运行 mrt 时,我收到正确的错误消息(无法在端口 3001 上侦听),当我尝试在另一个未占用的端口上运行时,我收到: 错误:连接 ECONNREFUSED

有什么建议吗?

进一步更新:

我刚刚完全关闭/重新启动,选择了一个新的端口号 (3200),检查了没有任何东西在使用该端口或附近的任何东西,然后运行了 meteor --port 3200。我得到了:

I20140115-14:02:29.623(-7)? ----------Wed Jan 15 2014 14:02:29 GMT-0700 (MST) SQL Driver Starting --------
W20140115-14:02:29.639(-7)? (STDERR) Error: connect ECONNREFUSED
W20140115-14:02:29.639(-7)? (STDERR)     at errnoException (net.js:901:11)
W20140115-14:02:29.640(-7)? (STDERR)     at Object.afterConnect [as oncomplete]     (net.js:892:19)
W20140115-14:02:29.640(-7)? (STDERR)     --------------------
W20140115-14:02:29.641(-7)? (STDERR)     at Handshake.Sequence (/Users/a230073/.meteor/tools/09b63f1ed5/lib/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:20)
W20140115-14:02:29.641(-7)? (STDERR)     at new Handshake (/Users/a230073/.meteor/tools/09b63f1ed5/lib/node_modules/mysql/lib/protocol/sequences/Handshake.js:9:12)
W20140115-14:02:29.641(-7)? (STDERR)     at Protocol.handshake (/Users/a230073/.meteor/tools/09b63f1ed5/lib/node_modules/mysql/lib/protocol/Protocol.js:41:50)
W20140115-14:02:29.642(-7)? (STDERR)     at PoolConnection.Connection.connect (/Users/a230073/.meteor/tools/09b63f1ed5/lib/node_modules/mysql/lib/Connection.js:73:18)
W20140115-14:02:29.642(-7)? (STDERR)     at Pool.getConnection (/Users/a230073/.meteor/tools/09b63f1ed5/lib/node_modules/mysql/lib/Pool.js:43:23)
W20140115-14:02:29.642(-7)? (STDERR)     at app/server/dbinit.js:13:6
W20140115-14:02:29.642(-7)? (STDERR)     at app/server/dbinit.js:79:3
W20140115-14:02:29.643(-7)? (STDERR)     at /Users/lfrey/Desktop/Thesis/test-meteor-sql/.meteor/local/build/programs/server/boot.js:155:10
W20140115-14:02:29.643(-7)? (STDERR)     at Array.forEach (native)
W20140115-14:02:29.643(-7)? (STDERR)     at Function._.each._.forEach (/Users/a230073/.meteor/tools/09b63f1ed5/lib/node_modules/underscore/underscore.js:79:11)

【问题讨论】:

    标签: meteor meteorite


    【解决方案1】:

    我在使用 gulp 时遇到了同样的问题...您需要找到端口的 PSID,然后运行 在 PSID 号码上杀死 -9。之后你应该能够再次运行它。

    sudo lsof -i :3200
    sudo kill -9 PSID
    

    【讨论】:

      【解决方案2】:

      首先,您应该使用meteor 而不是mrt 来启动您的应用程序。该约定在几个版本前发生了变化。

      如果您之前运行的流星进程没有正确退出,当您尝试在同一端口上启动另一个流星时,您会收到EADDRINUSE 错误。简单的解决方案就是重新启动。您也可以尝试找到该进程并手动终止它:运行ps aux | grep meteorkill PID,其中PID 是进程ID(来自ps 输出的第二列)。当然,您可能只是有一些其他不相关的进程使用该端口...但请先尝试上述方法。

      如果您尝试在另一个端口上运行您的进程,例如meteor --port 4000 应该可以工作,除非您无法使用该端口。例如,在 *NIX 机器上,低于 1024 的端口需要提升权限才能使用。

      【讨论】:

      • 我已经尝试了所有这些:使用 'meteor' 代替,杀死所有流星进程,重新启动并使用另一个端口。当我尝试在另一个端口(3002、4000 等)上运行时,我得到了错误:连接 ECONNREFUSED。
      • 你是否也杀死了所有节点进程?我认为meteor使用node in作为一个进程而不是meteor本身
      • @Akshat 好吧,他说他重新启动了,所以除非他一开始就挂起另一个进程,否则我认为这不是问题。
      • 看看this的问题。我在 linux 上,所以我无法测试所有这些命令,但如果你运行类似 lsof -i tcp:3000 的东西,它应该指向使用该端口的进程(如果它是一个流星进程,应该是 node)。我会在干净启动后这样做。我不确定为什么您会在其他端口上获得ECONNREFUSED,但这可能与您的环境有些古怪。
      • 另外你不能使用端口 3002,当你在端口 3000 上使用流星时,它会使用端口 3001 和 3002,所以如果流星进程继续运行,这些端口仍然会被使用。
      猜你喜欢
      • 2016-05-04
      • 1970-01-01
      • 2012-05-01
      • 2018-11-05
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      相关资源
      最近更新 更多