Node.JS:获取错误:[nodemon]内部监视失败:观看ENOSPC

Eri*_*and 114 javascript node.js

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


但是,当我nodemon通过输入nodemon app.js我的命令行运行时,我收到以下错误...

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

在命令行下面的错误...

alopex@Alopex:~/Desktop/coding_dojo/week-9/javascript/node/testing_node$ Hello World
Run Code Online (Sandbox Code Playgroud)

为什么会这样?这是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
Run Code Online (Sandbox Code Playgroud)

Eri*_*and 383

我的最大端口似乎没有正确配置.我运行了以下代码,它有效...

echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)

此命令的作用是增加单个用户允许的监视数量.默认情况下,该数字可以为低(例如8192).当nodemon试图观察大量目录的变化时,它必须创建几个手表,这可以超过这个限制.

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

sudo sysctl fs.inotify.max_user_watches=582222 && sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)

但它首先编写的方式将使这种变化永久化.

  • @Hinrich,这只是猜测,我认为nodejs通过inotify库监视文件系统的变化.我认为每个用户对最大手表数量有限制,此设置会更改为更大的值. (11认同)
  • 有人可以解释一下这是做什么的,并详细阐述它为什么会有所帮助? (6认同)
  • 从Ubuntu 14.04到Ubuntu 16.04之后,我刚刚发生了这件事.您的解决方案也适用于我.谢谢 (3认同)
  • @devrimbaris正确! (2认同)
  • 请添加一些关于上述命令的描述? (2认同)
  • 如果您在Arch上,请将它放在`/ etc/sysctl.d/90-override.conf`上 (2认同)
  • 适用于Ubuntu 17.04 (2认同)
  • Downvote不提供描述代码的含义 (2认同)

paw*_*392 22

Erik,你可以通过杀死所有其他节点进程

pkill -f节点

然后再次重新启动服务器.它会工作得很好.

  • 投反对票,因为这也导致我的 Visual Studio Code 窗口冻结。 (11认同)

小智 19

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)

这对我有用

  • 请添加关于如何回答问题的解释。 (3认同)

Man*_*and 18

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

nodemon server.js

[nodemon] 1.17.2

[nodemon]随时重启,输入 rs

[nodemon]观看:.

[nodemon]开始 node server.js

[nodemon]内部手表失败:观看/ home/aurum304/jin ENOSPC

sudo pkill -f node
Run Code Online (Sandbox Code Playgroud)

要么

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)

  • 请小心使用“sudo pkill -f node”命令。它强制终止所有正在运行的节点应用程序。某些应用程序(例如 Atom、vscode)依赖于节点,因此此命令可能会导致这些应用程序崩溃,并且您可能会丢失工作。而且无论如何也不能保证一定有效果。第二个更好。 (5认同)

Zub*_*lam 17

根据这里的讨论,ENOSPC意味着Error No more hard-disk space available.之所以需要这么大的内存,nodemon或者gulp-nodemon(在我的情况下)是因为它正在观看它不应该的文件夹的内容.要修复该nodemon的ignore设置,可以用来告诉nodemon不要看什么.在这里查看nodemon示例配置.


cod*_*ire 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.
Run Code Online (Sandbox Code Playgroud)

这是我跑步时遇到的错误nodemon ./bin/www.

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

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

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

MD *_*YON 10

尝试这个....

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


小智 6

就我而言,关闭 Visual Studio 代码然后启动服务器就可以了

操作系统 - ubuntu 16.4 lts

Node.js 版本 - 8.11.1

npm 版本 - 6.0.0

  • 虽然这并不能直接回答问题(因为问题不涉及VS Code),但这确实解决了我的问题。 (2认同)

Ahm*_*man 5

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

nodemon.json

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

说明:此错误是因为你超出你的系统允许观察者的最大数量(即nodemon没有更多的磁盘空间来监视所有文件-这可能意味着你正在看并不重要文件)。所以你忽略非重要的文件,你不关心编译输出的测试案例在他们的变化,例如或。