关于node.js:Grunt watch error – Waiting …致命错误:观看ENOSPC

Grunt watch error - Waiting…Fatal error: watch ENOSPC

当我运行监视任务时,为什么要获得Waiting...Fatal error: watch ENOSPC?我如何解决这个问题?


经过一些研究,找到了解决办法。运行下面的命令。

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

对于arch linux,将这一行添加到/etc/sysctl.d/99-sysctl.conf:

1
fs.inotify.max_user_watches=524288


每当你需要运行sudo something ...来修复某个问题时,你应该停下来想想发生了什么。虽然这里接受的答案是完全正确的,但它是治疗症状而不是问题。这相当于购买更大的马鞍来解决以下问题:错误,不能把更多的垃圾装到小马身上。小马已经装了这么多垃圾,所以小马精疲力竭地昏倒了。

另一种选择(可能相当于从小马身上取下多余的垃圾并放入垃圾场)是运行:

1
npm dedupe

那就去祝贺你自己让小马开心。


尝试了手榴弹的答案后,您可以使用临时修复:

1
sudo bash -c 'echo 524288 > /proc/sys/fs/inotify/max_user_watches'

这与KDS的答案是一样的,但不会持续改变。如果错误发生在系统正常运行时间之后,则此选项非常有用。


要查明谁在创建不完整的实例,请尝试以下命令(源代码):

4

我的看起来像这样:

1
2
3
4
5
6
7
 25 /proc/2857/fd/anon_inode:inotify
  9 /proc/2880/fd/anon_inode:inotify
  4 /proc/1375/fd/anon_inode:inotify
  3 /proc/1851/fd/anon_inode:inotify
  2 /proc/2611/fd/anon_inode:inotify
  2 /proc/2414/fd/anon_inode:inotify
  1 /proc/2992/fd/anon_inode:inotify

使用ps -p 2857,我能够识别2857过程为sublime_text。只有在关闭所有高级窗口之后,我才能运行节点脚本。


在我的客户机崩溃后,我遇到了这个错误,我在服务器上运行的jest --watch命令仍然存在,我试图再次运行jest --watch

上述答案中所述的添加/etc/sysctl.conf解决了这个问题,但通过ps aux | grep nodekill找到我的旧流程也很重要。


在Linux中,您可以使用以下命令修复此问题:

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