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

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

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 ?


当前回答

我在基于Debian的发行版上开发一个节点应用程序时就遇到了这种情况。首先,一个简单的重启就解决了问题,但在另一个应用程序上又发生了这种情况。

因为它与inotify用来监视文件和查找目录更改的监视器数量有关,所以你必须设置一个更高的数字作为limit:

我可以从这里发布的答案中解决它 (感谢他!)

所以,我跑了:

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

详情请登录https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers#the-technical-details

希望能有所帮助!

其他回答

要解决这个问题并不容易

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

然后运行你的项目。

如果有fs.inotify。在/etc/sysctl.conf文件中,Max_user_watches =524288, 执行相同的命令(echo fs.inotify。Max_user_watches =524288 | sudo tee -a /etc/sysctl.conf)。运行你的项目

另一个简单而好的解决方案是将这个添加到jest配置中:

watchPathIgnorePatterns: ["<rootDir>/node_modules/", "<rootDir>/.git/"]

这将忽略指定的目录,以减少被扫描的文件

如果你已经添加了2个修复:fs.inotify.max_user_watches=524288

重启机器,一切都会恢复正常的 将引起问题的文件夹(对我来说是node_modules)重命名为任意名称(node_modilesa),然后重新命名。这将删除linux放在这些文件夹上的手表。允许您再次正常编码。

我在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,而是脚本开始运行你的应用程序。

来自官方文件:

“Visual Studio Code无法监视此大工作区中的文件更改”(错误ENOSPC)

当你看到这个通知时,它表明VS Code文件监视器正在用完句柄,因为工作区很大,包含很多文件。可以通过运行以下命令查看当前限制:

猫/proc/sys/fs/inotify/max_user_watches

可以通过编辑将限制增加到最大值

/etc/sysctl.conf

并将这一行添加到文件的末尾:

fs.inotify.max_user_watches = 524288

然后可以通过运行加载新值

Sudo sysctl -p

请注意Arch Linux的工作方式略有不同,详细信息请参见增加inotify观察者的数量。

虽然524,288是可以观看的最大文件数量,但如果您处于内存特别受限的环境中,您可能希望降低这个数字。每个文件手表占用540字节(32位)或~1kB(64位),因此假设所有524,288块手表都被消耗掉了,结果是大约256MB(32位)或512MB(64位)的上限。

另一个选择

是排除特定的工作空间目录从VS Code文件监视器的文件。watcherExclude设置。文件的默认值。watcherExclude排除了node_modules和.git下的一些文件夹,但是你可以添加其他你不想让VS Code跟踪的目录。

"files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/*/**": true
  }