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

时间:2016-01-07 18:31:37

标签: javascript node.js

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

但是,当我在命令行中输入nodemon来运行nodemon app.js时,我收到以下错误...

[nodemon] 1.8.1 [nodemon] to restart at any time, enter rs [nodemon] watching: *.* [nodemon] starting node app.js [nodemon] Internal watch failed: watch ENOSPC

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

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

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

附注......

1)app.jsJavascript文件,其中包含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

13 个答案:

答案 0 :(得分:323)

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

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

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

答案 1 :(得分:21)

Erik, 您可以通过

杀死所有其他节点进程
  

pkill -f节点

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

答案 2 :(得分:16)

entriesToObject

这是我在运行[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. 时遇到的错误。

  

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

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

答案 3 :(得分:11)

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

这对我有用

答案 4 :(得分:8)

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

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

答案 5 :(得分:4)

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

nodemon.json

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

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

答案 6 :(得分:1)

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

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

在我的特定情况下,我有一个我想要观看的目录和大约九个我想忽略的目录,所以指定'--watch'比指定'--ignore'

要简单得多

答案 7 :(得分:1)

尝试一下。...

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

会反抗工作

答案 8 :(得分:0)

我有同样的错误,但在Windows 10中的Ubuntu 14.04(Windows上的Ubuntu上的Bash)。我所做的只是为了更新Creators更新,然后允许我安装16.04版本的Ubuntu bash然后安装最新版本的节点(通过this步骤)我安装了最新版本的npm然后nodemon开始正常工作。

答案 9 :(得分:0)

如果操作系统是Linux,则只需使用它即可

 sudo npm run server

答案 10 :(得分:0)

尝试使用您的 app.js 所在的更多特定目录重新打开 VS 代码或 Atom。 我打开了很多文件夹,出现了这个问题。但是一旦我打开我的特定文件夹并再次尝试,它就成功了。

答案 11 :(得分:0)

必须有比我建议的更好的方法来解决这个问题。我希望一些专家登陆这个页面。另请注意,我正在开发服务器上工作,因此有能力杀死 node.js 的所有进程。这可能不是您想要的。

我按照@zubair-alam的回答第一次解决了这个问题。我在 package.json 中添加了“ignore”(即使引用的链接说它是默认值)。

 ........ Before
  "ignore": [
    ".git",
    "node_modules/**/node_modules"
  ],
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon ./index.js --exec babel-node -e js"
  },
 ........ After

但是,一旦我将新文件添加到文件夹中,错误就会再次返回。我在 Linux 上工作,所以我基本上杀死了所有与 node 相关的进程,如下所示。

killall node

然后通过说重新启动npm。服务器启动时没有错误。

npm start

您必须使用特定于您的操作系统的命令来更改 killall 命令。请参阅 this 讨论。

答案 12 :(得分:-1)

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

操作系统-Ubuntu 16.4 lts

node.js版本-8.11.1

npm版本-6.0.0