【问题标题】:How to properly restart nodemon server如何正确重启nodemon服务器
【发布时间】:2023-04-24 06:59:01
【问题描述】:

当我使用以下命令运行 nodejs 服务器时:

"start": "nodemon --max-old-space=8192 ./src/app.js --exec babel-node"

如果我更改了代码中的任何内容,nodemon 会自动重新加载代码并使用以下消息重新启动服务器。

[nodemon] restarting due to changes...
[nodemon] starting `babel-node --max-old-space=8192 ./src/app.js`

如何以同样的方式手动重启服务器?

或者换句话说:我在 package.json 脚本“重启”命令中写什么来模拟 nodemon 自动完成的相同行为?

谢谢

【问题讨论】:

  • 在控制台中输入“rs”?
  • 我正在寻找如何在 Nodemon 启动/重启后执行命令/回调,你帮了我很多:) 谢谢!

标签: node.js nodemon


【解决方案1】:

documentation 中所述,您可以通过在运行nodemon 的控制台中键入rs 手动重启。
没有外部命令可以触发从其他进程重新启动。
一种解决方法是通过模拟文件更改来触发重新启动。
一个简单的touch 在被监视的文件上就足够了。所以你可以编写一个 npm 脚本来触及其中一个被监视的文件。

"restart": "touch app.js"

【讨论】:

    【解决方案2】:

    nodemon 的目的是监听文件的变化并重启服务器。如果你想手动重启服务器那么你不需要使用nodemon,你可以使用node命令。

    下面的代码可以达到目的。

    {
        "scripts": {
            "start": "node ./src/app.js",
            "restart": "kill -9 $(ps aux | grep '\snode\s' | awk '{print $2}') && node ./src/app.js "
        },
    }
    

    【讨论】:

      【解决方案3】:

      如果您特别希望在一段时间后解决 “listen EADDRINUSE: address already in use” 错误,您可以检查哪个应用程序正在使用 nodemon 想要使用的端口:

      sudo lsof -i :4500
      

      上面将为您提供使用该端口的应用程序的 PID。然后您可以通过以下方式终止该进程:

      kill -9 <PID>
      

      【讨论】:

        【解决方案4】:

        来源:https://www.npmjs.com/package/nodemon

        手动重启


        当 nodemon 正在运行时,如果您需要手动重新启动您的 应用程序,而不是停止和重新启动 nodemon,您可以键入 rs 回车,nodemon 将重新启动您的进程。

        【讨论】: