Bad*_*bet 19 watchman react-native
我已经设置了一个新的空白反应本机应用程序。
安装几个节点模块后,出现此错误。
我知道这与看守人没有足够的空间来监视所有文件更改有关。
我想知道什么是最好的行动方案?
我应该node_modules通过将其添加到文件夹来忽略它.watchmanconfig吗?
sni*_*aka 97
您可以修复它,即增加 inotify 观察者的数量。
如果您对技术细节不感兴趣,只想听听工作:
如果您运行的是 Debian、RedHat 或其他类似的 Linux 发行版,请在终端中运行以下命令:
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
如果您正在运行 ArchLinux,请改为运行以下命令
$ echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
然后将其粘贴到您的终端中并按 Enter 运行它。
技术细节
在 Linux 上,Listen 默认使用 inotify 来监视目录的变化。遇到系统限制您可以监视的文件数量的情况并不少见。例如,Ubuntu Lucid(64 位)的 inotify 限制设置为 8192。
您可以通过执行以下命令获取当前的 inotify 文件监视限制:
$ cat /proc/sys/fs/inotify/max_user_watches
Run Code Online (Sandbox Code Playgroud)
当此限制不足以监视目录中的所有文件时,必须增加此限制才能使侦听正常工作。
您可以临时设置新的限制:
$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
如果您想让您的限制永久化,请使用:
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
您可能还需要注意的价值观max_queued_events和max_user_instances若监听抱怨不断。
Abd*_*eeh 34
您可以尝试编辑
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
cat /proc/sys/fs/inotify/max_user_watches
fs.inotify.max_user_watches=524288
Run Code Online (Sandbox Code Playgroud)
Pim*_*den 26
上面的大多数答案都讨论了提高限制,而不是消除根本原因,这通常只是冗余监视的问题,通常针对 node_modules 中的文件。
答案在 webpack 5 文档中:
watchOptions: { ignored: /node_modules/ }
只需阅读此处: https: //webpack.js.org/configuration/watch/#watchoptionsignored
文档甚至将其称为“提示”,引用:
如果观看不适合您,请尝试此选项。这可能有助于解决 VirtualBox、WSL、容器或 Docker 中的 NFS 和计算机问题。在这些情况下,请使用轮询间隔并忽略 /node_modules/ 等大型文件夹,以将 CPU 使用率保持在最低水平。
VS Code 或任何代码编辑器也会创建大量文件监视。默认情况下,其中许多是完全多余的。在这里阅读更多相关信息:https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-错误-enospc
Dan*_*ira 17
解决我的问题的一个简单方法是:
npm cache clear
Run Code Online (Sandbox Code Playgroud)
今天的最佳实践是
npm cache verify
Run Code Online (Sandbox Code Playgroud)
npm或由它控制的进程正在监视太多文件。更新构建节点上的 max_user_watches 可以永久修复该问题。对于 debian,请在终端上输入以下内容:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
如果您想知道如何增加 inotify 观察者的数量,只需单击链接。
小智 16
该错误的意思是系统监视的文件数量已达到限制!!
结果:执行的命令失败!或发出警告(例如执行本机启动vsocde)
解:
修改系统监控文件数
的Ubuntu
sudo gedit /etc/sysctl.conf
在底部添加一行
fs.inotify.max_user_watches=524288
然后保存并退出!
sudo sysctl -p
检查一下
然后就解决了!
Kas*_*hif 14
在react.js中向我展示同样的错误我以这种方式修复希望也能在react native中工作
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
现在您可以再次运行 npm start 。
npm start
Run Code Online (Sandbox Code Playgroud)
Hoa*_*ell 13
来自官方文档:
“Visual Studio Code 无法观察这个大工作区中的文件更改”(错误 ENOSPC)
当您看到此通知时,它表示 VS Code 文件观察器的句柄用完,因为工作区很大并且包含许多文件。可以通过运行查看当前限制:
cat /proc/sys/fs/inotify/max_user_watches
可以通过编辑将限制增加到最大值
/etc/sysctl.conf
并将此行添加到文件末尾:
fs.inotify.max_user_watches=524288
然后可以通过运行加载新值
须藤 sysctl -p
请注意,Arch Linux 的工作方式略有不同,有关详细信息,请参阅增加 inotify 观察者的数量。
虽然 524,288 是可以观看的最大文件数,但如果您处于内存特别受限的环境中,您可能希望降低该数字。每个文件 watch 占用 540 字节(32 位)或 ~1kB(64 位),因此假设所有 524,288 个 watch 都被消耗掉,那么上限约为 256MB(32 位)或 512MB(64 位) )。
另外一个选项
是使用 files.watcherExclude 设置从 VS Code 文件观察器中排除特定的工作区目录。files.watcherExclude 的默认值不包括 node_modules 和 .git 下的一些文件夹,但您可以添加其他不希望 VS Code 跟踪的目录。
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/node_modules/*/**": true
}
Run Code Online (Sandbox Code Playgroud)
MD *_*YON 12
首先,您每次都可以使用 root 权限运行
须藤 npm 开始
或者您可以删除node_modules文件夹并使用npm install重新安装
或者你可以获得永久的解决方案
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Cos*_*ias 12
我使用 ubuntu 20 服务器,并在文件中添加 以下行: /etc/sysctl.conf
fs.inotify.max_user_watches=524288
Run Code Online (Sandbox Code Playgroud)
然后保存文件并运行
sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
之后一切正常!
小智 10
删除反应 node_modules
rm -r node_modules
yarn or npm install
yarn start or npm start
Run Code Online (Sandbox Code Playgroud)
如果发生错误,请再次使用此方法
简单的解决方案:
我发现以前的解决方案对我的情况效果很好。我删除node_modules并清除了yarn / npm 缓存。
长尾解决方案: 如果您想要一个长尾解决方案 - 例如,如果您经常遇到此错误 - 您可以增加允许的观察者的值(取决于您的可用内存)
要计算出当前使用的观察者数量,您可以使用这个方便的 bash 脚本,而不仅仅是猜测:
https://github.com/fatso83/dotfiles/blob/master/utils/scripts/inotify-consumers
我建议将临时设置max_user_watches为一个较高的值:
sudo sysctl fs.inotify.max_user_watches=95524288 /run the script.
Run Code Online (Sandbox Code Playgroud)
每个观察者都需要
因此,如果您想允许使用 512MB(在 64 位上),则可以设置 524288 作为值。
相反,您可以将要设置的内存量乘以 1024。
例子:
512 * 1024 = 52488
1024 * 1024 = 1048576
Run Code Online (Sandbox Code Playgroud)
它向您显示当前使用的 inotify-consumers 的确切数量。因此,您可能对应该将限制增加多少有更好的想法。
小智 9
一般来说,我们不需要增加文件观察者的数量,在这种情况下,我们将有更多的观察者
我们需要删除多余的观察者,这些观察者变成了僵尸
问题是我们有许多文件观察程序正在填充我们的内存我们只需要删除这些文件观察程序(如果是节点)
killall node
Run Code Online (Sandbox Code Playgroud)
小智 8
我通过使用 sudo ie 解决了这个问题
sudo yarn start
Run Code Online (Sandbox Code Playgroud)
或者
sudo npm start
Run Code Online (Sandbox Code Playgroud)
我在基于 Debian 的发行版上开发的节点应用程序发生在我身上。首先,简单的重启解决了它,但它又发生在另一个应用程序上。
由于它与inotify用于监视文件和查找目录更改的观察者数量有关,因此您必须设置更高的数量作为限制:
我能够从这里发布的答案中解决它 (感谢他!)
所以,我跑了:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
在https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers#the-technical-details阅读更多关于正在发生的事情
希望能帮助到你!
sysctl -p在设置后使用该方法fs.inotify.max_user_watches对我来说不起作用(顺便说一下,此设置已经设置为很高的值,可能是我不久前尝试使用上面推荐的解决方法来解决此问题)。
我在这里找到的问题的最佳解决方案,下面我分享了解决该问题的执行步骤 - 在我的例子中,问题是在运行 Visual Studio 代码时发现的,但在其他情况下解决问题应该是相同的,例如您的情况:
sysctl fs.inotify.{max_queued_events,max_user_instances,max_user_watches},然后将其设置为不同的值(较低的值也可以)
sudo sysctl -w fs.inotify.max_user_watches=16384kill在 (1) 中找到消耗最多文件观察程序的进程(在我的例子中,baloo_file)balooctl disable。现在运行sudo code --user-data-dir,这次应该以管理员权限打开 vscode。(顺便说一句,当它不存在时 - 运行sudo code --user-data-dir --verbose看看问题是什么 - 这就是我发现它与文件观察者限制有关的方式)。
更新:
您可以按照此处所述配置 VS 代码文件观察程序排除模式。这可能被证明是最终的解决方案,我只是不确定您总是会事先知道您不感兴趣观看哪些文件。
另一个简单而好的解决方案是将其添加到 jest 配置中:
watchPathIgnorePatterns: ["<rootDir>/node_modules/", "<rootDir>/.git/"]
Run Code Online (Sandbox Code Playgroud)
这会忽略指定的目录以减少被扫描的文件
如果您使用 VS Code 编辑器,任何编辑器都会因项目中的大量文件而出错。其中不需要 node_modules 和构建,因此从列表中删除。全部在 VS Code 文件菜单中打开
您必须过滤不必要的文件夹文件侧边栏
转到代码>首选项>设置
在搜索设置中搜索关键字“文件:排除”
添加图案
**/节点模块
**/建造
现在重新打开编辑器就可以了
| 归档时间: |
|
| 查看次数: |
13469 次 |
| 最近记录: |