我已经设置了一个新的空白反应本机应用程序。
在安装了几个节点模块后,我得到了这个错误。
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 ?
我在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,而是脚本开始运行你的应用程序。
根本原因
上面的大多数回答都在谈论提高限制,而不是消除根本原因,这通常只是冗余监视的问题,通常是针对node_modules中的文件。
Webpack
答案在webpack 5文档中:
watchOptions:{被忽略:/node_modules/}
只需在这里阅读:https://webpack.js.org/configuration/watch/#watchoptionsignored
文档甚至提到这是一个“提示”,引用如下:
如果观察对你不起作用,试试这个方法。这可能会有所帮助
NFS和VirtualBox、WSL、容器或机器中的问题
码头工人。在这些情况下,使用轮询间隔并忽略large
文件夹,如/node_modules/,以保持CPU的使用最小化。
VS代码
VS Code或任何代码编辑器也会创建大量的文件监视。默认情况下,其中许多是完全多余的。更多信息请点击:https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc
我在基于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
希望能有所帮助!