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

问题描述 投票:91回答:9

我刚刚在我的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

为什么会这样?这是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
javascript node.js
9个回答
334
投票

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

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

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


22
投票

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

pkill -f节点

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


16
投票

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


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

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

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

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


9
投票

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

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

4
投票

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

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • 请注意,默认情况下,.gitnode_modulesbower_components.nyc_outputcoverage.sass-cache将被忽略,因此您无需将它们添加到您的配置中。

说明:发生此错误是因为您超出了系统允许的最大观察者数量(即nodemon没有更多的磁盘空间来观看所有文件 - 这可能意味着您正在观看的不是重要文件)。因此,您忽略了不关心其中的更改的非重要文件,例如构建输出或测试用例。


1
投票

您还可以指定要监视的目录列表(例如正数),而不是指定要忽略的目录列表(例如否定):

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,然后在安装最新版本的节点后(通过this步骤)我也安装了最新版本的npm然后是nodemon开始正常工作了。


-1
投票

在我的情况下关闭Visual Studio代码然后启动服务器就行了

操作系统 - ubuntu 16.4 lts

node.js版本 - 8.11.1

npm版本 - 6.0.0

© www.soinside.com 2019 - 2024. All rights reserved.