【问题标题】:Nodemon crashes and shows waiting for file changesNodemon 崩溃并显示等待文件更改
【发布时间】:2019-01-02 10:27:13
【问题描述】:

我使用的是 nodemon 版本 1.18.3 和 express 版本 4。 直接运行 nodemon 命令时,出现以下错误:

events.js:165
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1346:14)
    at listenInCluster (net.js:1387:12)
    at Server.listen (net.js:1475:7)
    at Function.app.listen (/home/rishabh/Documents/my_projects/getting_MEAN/loc8r/node_modules/express/lib/application.js:531:24)
    at Object.<anonymous> (/home/rishabh/Documents/my_projects/getting_MEAN/loc8r/bin/www:7:18)
    at Module._compile (internal/modules/cjs/loader.js:654:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
    at Module.load (internal/modules/cjs/loader.js:566:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
    at Function.Module._load (internal/modules/cjs/loader.js:498:3)
Emitted 'error' event at:
    at emitErrorNT (net.js:1366:8)
    at process._tickCallback (internal/process/next_tick.js:178:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:697:11)
    at startup (internal/bootstrap/node.js:201:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:516:3)
[nodemon] app crashed - waiting for file changes before starting...

Nodemon 崩溃并继续等待文件更改。

【问题讨论】:

  • 试试这个echo fs.inotify.max_user_watches=524298 | sudo tee -a /etc/sysctl.conf &amp;&amp; sudo sysctl -p。让我知道它是否修复,然后我可以回答。
  • nodemon 使用名为inotify watchers 的东西,它允许nodemon 监视您的文件系统。不幸的是,当这个限制超过 nodemon 时,nodemon 无法观察代码的变化。这里提到了这一点:github.com/guard/listen/wiki/…
  • 这是因为您的文件有一些错误或您的代码有一些错误。 Nodemon 会告诉您纠正应用程序中的所有错误。在所有错误消失之后 nodemon 自动启动服务器。
  • @PrashantGupta 如果是这样的话,那么它不应该在端口 3000 上给出监听错误。
  • @RishabhGupta 请发布您的代码。

标签: javascript node.js nodemon


【解决方案1】:

发生这种情况是因为 nodemon 无法像 issue on github 中提到的那样监视您的文件系统。

基本上,有一种称为inotify 观察者的东西,nodemon 使用它来观察您在代码中所做的更改。

您可以通过增加最大观察者数量来解决此问题,然后重新启动计算机以应用更改:

echo fs.inotify.max_user_watches=524298 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

还提到了here

或者您也可以在端点文件中添加以下代码:

process.on('SIGUSR2', () => { process.exit(0); });

【讨论】:

  • @RishabhGupta 哦,我很高兴。
【解决方案2】:

错误提示3000 端口已被使用。

你需要使用另一个端口,你可以使用下面的命令,

nodemon ./YOUR_SCRIPT_NAME.js localhost 3005

希望这会有所帮助!

【讨论】:

  • 检查这个问题:github.com/remy/nodemon/issues/702。这意味着您的解决方案是临时解决方案。
  • 可能是端口。在 VScode 的终端中使用 nodemon 运行应用程序后,我收到此错误。有一次我试图退出它,但它没有用。后来我尝试从常规终端执行此操作,它给了我这个错误。必须关闭 VScode 并重新启动它。
  • @DakshMiglani 刚刚看完这篇文章,内容非常丰富。但通常EADDRINUSE 错误是由于端口不可用而发生的。
  • @DavidR 是的,但通常端口 3000 用于开发服务器,这意味着他正在运行此服务器并更改了一些代码,但随后发生了此问题,解决此问题的方法是增加观察者。
猜你喜欢
  • 2019-12-02
  • 2020-12-09
  • 2020-01-19
  • 2022-01-15
  • 2018-04-29
  • 2017-10-15
  • 2016-09-25
  • 2021-09-04
  • 2021-01-06
相关资源
最近更新 更多