【问题标题】:NodeJS - nodemon not restarting my serverNodeJS - nodemon 没有重新启动我的服务器
【发布时间】:2023-08-17 14:08:01
【问题描述】:

我安装了 NodeJS (4.4.5),然后继续安装 nodemon (1.9.2), 我遵循安装的所有说明(npm install -g nodemon)

我创建了一个新文件夹,里面有我的 server.js 和一些基本代码:

var http = require('http');

http.createServer(function (request, response){
    response.writeHead( 200, {'Content-Type': 'text/plain'} );
    response.write("Hello world");
    response.end();
}).listen(3000, 'localhost');

console.log('http://localhost:3000');

所以当我在控制台“nodemon server.js”中运行时,我得到了这个:

[nodemon] 1.9.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server.js`
http://localhost:3000

(这意味着运行良好)

但是当我在 server.js 中进行一些更改时,它不会重新启动服务器

可能是什么问题?

【问题讨论】:

  • 使用相同的版本和代码对我来说似乎工作正常。你确定你保存了文件? :)
  • 是的,我一直在进行更改和保存,我能够重新启动服务器的唯一方法是输入“rs”,就像上面所说的那样
  • 也许你在虚拟机中运行?我过去曾遇到过 github.com/remy/nodemon/issues/146 的问题

标签: javascript node.js npm nodemon


【解决方案1】:

我在 nodemon 1.9.2 上遇到了同样的问题:nodemon 监视了 0 个文件

(尝试详细模式nodemon server.js -V 以获取更多信息)

经过一番研究,这个问题是由于我的根目录名称: 我的根目录被命名为“mysite.git”,因此 nodemon 正在观看 0 文件。我已经重命名了没有点的根目录,nodemon 现在可以按预期工作了。

从根目录中删除所有特殊字符,nodemon 应该可以正常工作。

【讨论】:

  • 同时从您的项目路径目录中删除所有特殊字符。
  • 我有 ./src/index.js 并且必须从一开始就删除 ./ 以使其真正观看文件!
【解决方案2】:

在某些网络环境中(例如运行 nodemon 的容器在已安装的驱动器上读取数据),您将需要使用 legacyWatch: true 来启用 Chokidar 的轮询。

通过 CLI,使用 --legacy-watch 或简称 -L:

nodemon -L

【讨论】:

  • 这解决了我在 vagrant box 中运行服务器时的问题,源文件与主机共享。
  • 这也解决了我在 vagrant box 中运行我的节点时的问题。谢谢
  • 这解决了我在使用 WSL2 (Ubuntu18.04) 时遇到的问题。
【解决方案3】:

确保添加到脚本 -> 开始 --legacy-watch ./app

"scripts": {
    "start": "nodemon --legacy-watch ./app  ./bin/www "
},

【讨论】:

    【解决方案4】:

    我刚刚遇到了似乎相同的问题,我将更改我的代码并保存它们,但 nodemon 不会重新启动我的服务器。我可以更新的唯一方法是通过控制台中的“rs”。我在这里结束寻找解决方案,但后来决定重新安装 nodemon,因为没有很好的解释为什么它不起作用:

    npm uninstall nodemon
    npm install nodemon
    

    重新安装后自动重启代码更改工作。

    【讨论】:

      【解决方案5】:

      像这样编辑 package.json 文件:

       "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1",
          "start": "nodemon server.js",
        },```
      
      This may help you.
      

      【讨论】:

      • 你的想法是什么,我看不到任何帮助。
      【解决方案6】:

      您可以尝试像这样nodemon -L yourapp.js 运行,类似这样:

      "scripts": {
          "start": "node index.js",
          "dev": "nodemon -L index.js "
       }
      

      然后运行命令:

      npm run dev
      

      这对我有用!

      【讨论】:

        【解决方案7】:

        Nodemon 使用SIGUSR2 信号重新启动服务器,交叉检查您的服务器是否覆盖了此进程信号的功能。 就我而言,我使用的是 heapdump 模块,它正在重置此信号,因此我使用以下命令启动服务器:-

        env NODE_HEAPDUMP_OPTIONS=nosignal nodemon app.js
        

        这对我有用。

        【讨论】:

          【解决方案8】:

          我在 YouTube 上找到了解决方案。所以,解决办法是:

          1. 复制此路径:

          C:\Windows\System32

          1. 进入“计算机/这台电脑”属性,然后进入“高级系统设置/系统设置”。
          2. 然后点击“环境变量”按钮。
          3. 然后双击用户变量部分的“路径”。
          4. 然后点击“新建”并粘贴此路径:

          C:\Windows\System32

          【讨论】:

          • 只是,你能加个Youtube视频的链接吗?
          • 我认为这无关紧要。用户没有说他在 Windows 上有问题。
          【解决方案9】:

          我遇到了同样的问题。我试过卸载nodemon,没有用。如果可行,您可以尝试全局卸载 nodemon。在我的情况下它不起作用,所以我所做的是我从系统中删除了所有节点模块。它们将位于 C:/users/user/AppData/Roaming/npm。我什至将node重新安装到我的系统中,然后安装了nodemon,然后它就可以工作了。

          【讨论】:

          • 这听起来像是一个不同的问题,而不仅仅是 nodemon lib
          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
          • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review