📜  nodemon 未重新启动 (1)

📅  最后修改于: 2023-12-03 15:33:11.723000             🧑  作者: Mango

Nodemon 未重新启动

当使用 Nodemon 进行开发时,有时候会遇到 Nodemon 未能重新启动的情况。这可能会影响开发进度,需要我们尽快解决。

问题原因

Nodemon 是一个监视 Node.js 应用程序中的任何更改并自动重启服务的工具,因此它需要监听文件系统的变化。当文件系统的更改发生快于 Nodemon 能处理的速度时,它就会丢失一些更改从而失效。

解决方法
1. 提高监听限制

在 Linux 和 macOS 上,文件系统的最大监听数是有限制的。当 Nodemon 监听的文件数超过该限制时,它就停止监听。我们可以通过编辑 sysctl.conf 文件或者通过命令行参数来提高该限制。

编辑 sysctl.conf 文件可以通过以下步骤来完成:

  1. 打开终端,使用以下命令编辑 sysctl.conf 文件:

    sudo nano /etc/sysctl.conf
    
  2. 添加以下行:

    fs.inotify.max_user_watches=524288
    

    注意:这个值应该根据你的系统配置进行调整。如果你还在增加监听器,你可能需要增加这个值。

  3. 保存并退出文件。

  4. 运行以下命令以使更改立即生效:

    sudo sysctl -p
    

如果你使用的是 macOS,则可以通过以下命令提高该限制:

echo 'kern.maxfiles=65536' | sudo tee -a /etc/sysctl.conf
echo -e 'limit maxfiles 65536 200000\nlimit maxproc 2048 2048' | sudo tee -a /etc/launchd.conf
echo 'ulimit -n 65536' | sudo tee -a ~/.bash_profile
echo 'ulimit -n 65536' | sudo tee -a ~/.zshrc

这个方法同样适用于 Linux。

2. 重启 Nodemon

如果 Nodemon 已经失效,一种解决方法是重新启动 Nodemon。

rs

这个命令可以关闭 Nodemon 并重新启动应用程序。

3. 升级 Nodemon

Nodemon 有很多版本,如果你使用的是旧版本,可能会没有修复最新版本的一些问题。因此,我们建议您升级到最新版本,并尝试解决问题。您可以使用以下命令更新 Nodemon:

npm install -g nodemon
4. 优化代码

有时候,文件系统更改过多可能是因为我们的代码存在不必要的轮询和不必要的 I/O 操作。如果是这种情况,请考虑优化代码,减少不必要的更改,并尽量避免使用同步代码。

总结

在开发 Node.js 应用程序时,遇到 Nodemon 未能重新启动的问题是很常见的。但是我们可以采取一些措施来减少这种情况的发生。我们可以增加文件系统的监听器限制、重新启动 Nodemon、升级 Nodemon 或者优化代码等等。