我已经设置了一个新的空白反应本机应用程序。

在安装了几个节点模块后,我得到了这个错误。

Running application on PGN518.
internal/fs/watchers.js:173
   throw error;
   ^

Error: ENOSPC: System limit for number of file watchers reached, watch '/home/badis/Desktop/react-native/albums/node_modules/.staging'
   at FSWatcher.start (internal/fs/watchers.js:165:26)
   at Object.watch (fs.js:1253:11)
   at NodeWatcher.watchdir (/home/badis/Desktop/react-native/albums/node modules/sane/src/node watcher. js:175:20)
   at NodeWatcher.<anonymous> (/home/badis/Desktop/react-native/albums/node modules/sane/src/node watcher. js:310:16)
   at /home/badis/Desktop/react-native/albums/node modules/graceful-fs/polyfills.js:285:20
   at FSReqWrap.oncomplete (fs.js:154:5)

我知道这与没有足够的空间让守望者监视所有文件更改有关。

我想知道在这里采取的最佳行动是什么?

我应该忽略node_modules文件夹添加到.watchmanconfig ?


当前回答

虽然几乎每个人都建议增加观看人数,但我不同意这是一个解决方案。 在我的情况下,我想完全禁用watcher,因为测试运行在CI上使用vi -cli插件,启动web-pack-dev服务器为每个测试。

问题是:当几个构建同时运行时,它们会失败,因为达到了观察者的限制。

首先,我尝试将以下内容添加到vue.config.js中:

module.exports = {
  devServer: {
    hot: false,
    liveReload: false
  }
}

裁判:https://github.com/vuejs/vue-cli/issues/4368 # issuecomment - 515532738

而且它可以在本地工作,但不能在CI上工作(显然,由于某种模糊的原因,它在第二天也停止了在本地工作)。

在调查了web-pack-dev服务器文档后,我发现: https://webpack.js.org/configuration/watch/#watch

然后是这个: https://github.com/vuejs/vue-cli/issues/2725#issuecomment-646777425

长话短说这最终解决了问题:

vue.config.js

module.exports = {
publicPath: process.env.PUBLIC_PATH,
devServer: {
    watchOptions: {
        ignored: process.env.CI ? "./": null,
  },
}

}

Vue 2.6.14版本

其他回答

首先,你可以每次都以root权限运行 Sudo NPM启动 或者你可以删除node_modules文件夹,然后使用npm install重新安装 或者你可以得到永久的解决方案 fs.inotify回响。Max_user_watches =524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

我在linuxmint发行版上遇到了这个问题。当我在应用程序的/public文件夹中添加了很多文件夹和子文件夹/文件时,似乎就发生了这种情况。 我应用了这个修复,它工作得很好…

$ echo fs.inotify。Max_user_watches =524288 | sudo tee -a /etc/sysctl.conf . a

更改目录到/etc文件夹: cd /等

然后运行这个: Sudo systcl -p

你可能需要关闭你的终端,重新启动npm才能让它工作。

如果失败了,我建议全局安装react-scripts并直接运行你的应用程序。

$ NPM I -g保存反应脚本

然后不是NPM start run,而是脚本开始运行你的应用程序。

在react.js中显示我同样的错误,我修复了这种方式,希望在react本机也能工作

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

sudo sysctl -p

现在你可以再次运行npm start。

npm start

对于vs代码,请参阅此处的详细说明: https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc

迟回答,已经有很多好的答案了。

如果你想要一个简单的脚本来检查最大文件监视是否足够大,如果不够大,就增加限制,下面是:

#!/usr/bin/env bash

let current_watches=`sysctl -n fs.inotify.max_user_watches`

if (( current_watches < 80000 ))
then
  echo "Current max_user_watches ${current_watches} is less than 80000."
else
  echo "Current max_user_watches ${current_watches} is already equal to or greater than 80000."
  exit 0
fi

if sudo sysctl -w fs.inotify.max_user_watches=80000 && sudo sysctl -p && echo fs.inotify.max_user_watches=80000 | sudo tee /etc/sysctl.d/10-user-watches.conf
then
  echo "max_user_watches changed to 80000."
else
  echo "Could not change max_user_watches."
  exit 1
fi

脚本将限制增加到80000,但是可以随意设置您想要的限制。