Node.JS:出现错误:[nodemon]内部监视失败:监视ENOSPC


135

我是第一次安装Node.jsUbuntu 14.04操作系统上。我也安装了npm。我的安装过程的下一步是安装nodemon。这一切都很好。


但是,当我在命令行nodemon输入内容运行时nodemon app.js,出现以下错误...

[nodemon] 1.8.1 [nodemon] to restart at any time, enterrs [nodemon] watching: *.* [nodemon] starting节点app.js [nodemon] Internal watch failed: watch ENOSPC

在错误下方的命令行中...

alopex@Alopex:~/Desktop/coding_dojo/week-9/javascript/node/testing_node$ Hello World

为什么会这样呢?这是nodemon的正常行为吗?如果没有,我该如何解决?


旁注...

1)app.js是其中包含的Javascript文件console.log(111)
2)node版本是v0.10.25
3)npm版本是1.3.10
4)nodemon版本是1.8.1
5)ubuntu版本是...

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty

Answers:


450

看来我的最大端口配置不正确。我运行了以下代码,它起作用了...

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

该命令的作用是增加单个用户允许的监视数量。默认情况下,该数字可以较低(例如,8192)。当nodemon尝试监视大量目录以进行更改时,它必须创建多个监视,这些监视可以超过该限制。

您还可以通过以下方法解决此问题:

sudo sysctl fs.inotify.max_user_watches=582222 && sudo sysctl -p

但是,它的最初编写方式将使此更改永久生效。


6
有人可以解释一下它的作用,并详细说明为什么会有所帮助吗?
Hinrich

11
@Hinrich,这只是一个猜测,我认为nodejs通过inotify库监视文件系统的更改。我认为每个用户对手表的最大数量有限制,此设置将更改为更大的值。
ᐅdevrimbaris

2
@devrimbaris正确!
埃里克·奥斯兰德(ErikÅsland)

3
从Ubuntu 14.04转到Ubuntu 16.04之后,这才刚发生在我身上。您的解决方案也对我有用。谢谢
麦斯特(Mestre San)2016年

2
把那/etc/sysctl.d/90-override.conf如果你对拱门
OverCoder

28

Erik,您可以通过以下方法杀死所有其他节点进程

pkill -f节点

然后再次重新启动服务器。这样就可以了。


7
下注,因为这也导致我的Visual Studio Code窗口冻结。
LexH

直到现在,它一直像魅力一样运作!现在它无效了,得到同样的错误。
红est

28

在正在运行的节点服务器上显示以下错误和解决方案:

nodemon server.js

[nodemon] 1.17.2

[nodemon]随时重启,输入 rs

[nodemon]观看:

[nodemon]开始 node server.js

[nodemon]内部监视失败:监视/ home / aurum304 / jin ENOSPC

sudo pkill -f node

要么

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

19

按照讨论过这里ENOSPC手段Error No more hard-disk space availablenodemongulp-nodemon(在我的情况下)之所以需要这么多内存的原因是,它正在监视它不应该查看的文件夹的内容。要解决该问题,nodemon的ignore设置可用于告诉nodemon不注意什么。在这里查看nodemon示例配置。


干得好,这是根本原因。
lutaoact

16
[nodemon] Internal watch failed: watch /home/Document/nmmExpressServer/bin ENOSPC
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! nmmexpressserver@0.0.0 start: `nodemon ./bin/www`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the nmmexpressserver@0.0.0 start script.

这是我在运行时遇到的错误nodemon ./bin/www

解决方案是关闭一个Atom窗口,该窗口在项目窗口中打开了整个文件夹目录。

我不知道为什么,但是我假设Atom和nodemon使用类似的过程来监视文件/文件夹。


2
那正是我的问题。我很想从项目的安装目录启动原子。我关闭了atom,从另一个目录启动了它,问题消失了。
雅。

就我而言,在Ubuntu中的Sublime上也发生了同样的情况。关闭IDE后,可以正常运行它。有什么提示吗?
Shad

我没有尝试复制它以查看是否已修复。
Codeinaire

谢谢。我关闭Gitkraken后,我的机器才能工作。这是一个奇怪的问题。因此,这意味着我们不能有两个进程监视同一文件夹吗?
张隆琪

这是Nextcloud客户-使用大量inotify手表。谢谢,大家!
Bill McGonigle '18

8

试试这个....

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

会反抗


1
我喜欢这种反抗的叛逆性质
SimplyKnownAsG

7

nodemon.json在您的根文件夹中添加一个配置文件,并指定忽略模式,例如:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • 注意,默认情况下.gitnode_modulesbower_components.nyc_outputcoverage.sass-cache被忽略,所以你并不需要将它们添加到您的配置做。

解释:发生此错误的原因是,您超出了系统允许的最大观察者数量(即nodemon,没有更多的磁盘空间可以观察所有文件-这可能意味着您正在观察的不是重要文件)。因此,您可以忽略那些无关紧要的非重要文件,例如构建输出或测试用例。




2

除了指定要忽略的目录列表(例如,否定的)之外,还可以指定要监视的目录列表(例如,肯定的):

nodemon --watch dir1 --watch dir2  dir1/examples/index.js

在我的特定情况下,我有一个要查看的目录,约有九个我想忽略的目录,因此指定“ --watch”比指定“ --ignore”要简单得多


0

我有同样的错误,但是在Windows 10的Ubuntu 14.04中(Windows的Ubuntu上的Bash)。我要克服的错误是更新Creators更新,然后允许我安装16.04版本的Ubuntu bash,然后在安装了最新版本的node(通过步骤)之后,我还安装了最新版本的npm和nodemon开始正常工作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.