达到文件观察者数量的系统限制[已解决]
System limit for number of file watchers reached [Solved]
当您的系统已达到正在监视的文件数量限制时,会出现错误“已达到文件监视程序数量的系统限制”。
要解决该错误,请增加系统上 inotify 观察者的限制。
Watchpack Error (watcher): Error: ENOSPC: System limit for number of file watchers reached, watch '/home/borislav/Documents/one/projects'
打开您的 shell 并运行以下命令之一,具体取决于您的操作系统发行版。
# for Debian, RedHat and other similar Linux distros echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p # for ArchLinux echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
您可以在此 Github 存储库中阅读有关增加 Linux 系统上 inotify 观察者数量的更多信息
。
在运行开发服务器或观看测试时,您已超出系统对正在观看的文件数的限制。
解决错误的方法是增加inotify watchers的限制。
该命令fs.inotify.max_user_watches=524288
用于增加系统上 inotify 观察者的数量。
但是,除非您将新数量的观察者写入文件,否则更改不会在重新启动之间持续存在。
您可以通过运行以下命令来检查当前数量:
cat /proc/sys/fs/inotify/max_user_watches
Ubuntu 20.04 中默认的 inotify 观察者数量是65535
.
524288
乘以。65535
_ 8
如果您愿意,可以设置更保守的 inotify 观察者数量,并在必要时增加数量。
该tee
命令读取输入并将其写入标准输出和一个或多个文件。
# for Debian, RedHat and other similar Linux distros echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p # for ArchLinux echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
我们使用-a
(append) 标志附加到文件而不是覆盖它。
/etc/sysctl.conf
(Debian, RedHat) 或(ArchLinux) 文件,您将在末尾看到增加 inotify 观察者数量的行。 /etc/sysctl.d/40-max-user-watches.conf
该sudo sysctl -p
命令用于指示sysctl
从文件中读取值/etc/sysctl.conf
。
如果您使用 ArchLinux,该sysctl --system
命令的作用相同。
总的来说,命令:
- 增加观察者的数量
inotify
。 - 将新数量写入文件。
- 指示
sysctl
读取更新的值。
您可以通过运行以下命令来查看更新的金额:
cat /proc/sys/fs/inotify/max_user_watches
进行更改后,您应该能够运行开发服务器或测试服务器。
设置更多的inotify
观察者
如果错误仍然存在,请尝试设置更多的 inotify 观察者。
# for Debian, RedHat and other similar Linux distros echo fs.inotify.max_user_watches=655350 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p # for ArchLinux echo fs.inotify.max_user_watches=655350 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
在更新系统上的 inotify 观察者数量后,尝试重新启动 Nodemon、React、Angular 或 Jest 服务器。
解决使用webpack时报错
如果您在使用 Webpack 时遇到错误,请尝试通过在
文件中node_modules
设置属性来排除该文件夹被监视。watchOptions
webpack.config.js
module.exports = { //... watchOptions: { ignored: /node_modules/, }, };
这会将文件夹排除node_modules
在监视之外。
如果这些建议都没有帮助,请尝试删除node_modules
目录并重新安装依赖项。
# 👇️ (macOS/Linux) delete node_modules and package-lock.json rm -rf node_modules rm -f package-lock.json rm -f yarn.lock # 👇️ (Windows) delete node_modules and package-lock.json rd /s /q "node_modules" del package-lock.json del -f yarn.lock # 👇️ clean npm cache npm cache clean --force # 👇️ install packages npm install # 👇️ restart your development server
node_modules
删除目录并重新安装项目的依赖项后,重新启动开发服务器。