Last updated: Apr 4, 2024
Reading timeยท3 min

The error "System limit for number of file watchers reached" occurs when your system has reached its limit for the number of files being watched.
To solve the error, increase the limit of inotify watchers on your system.

Watchpack Error (watcher): Error: ENOSPC: System limit for number of file watchers reached, watch '/home/borislav/Documents/one/projects'
Open your shell and run one of the following commands, depending on your OS distribution.
# 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

You can read more about increasing the amount of inotify watchers on your
Linux system in
this Github repository.
When running your development server or watching your tests, you have exceeded your system's limit for the number of files being watched.
The way to solve the error is to increase the limit of inotify watchers.
The command fs.inotify.max_user_watches=524288 is used to increase the amount
of inotify watchers on your system.
However, the changes won't persist between reboots unless you write the new amount of watchers to a file.
You can check the current amount by running the following command:
cat /proc/sys/fs/inotify/max_user_watches

The default number of inotify watchers in Ubuntu 20.04 is 65535.
524288 is 65535 multiplied by 8. You can set a more conservative number of
inotify watchers if you'd like and increase the number when necessary.
The tee command reads the input and writes it to standard output and one or
more files.
# 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
We used the -a (append) flag to append to the file and not overwrite it.
/etc/sysctl.conf (Debian, RedHat) or /etc/sysctl.d/40-max-user-watches.conf (ArchLinux) file on your system, you will see the line that increases the number of inotify watchers at the end.The sudo sysctl -p command is used to instruct sysctl to read the values
from the /etc/sysctl.conf file.
The sysctl --system command does the same if you use ArchLinux.
In its entirety, the command:
inotify watchers.sysctl to read the updated values.You can view the updated amount by running the following command:
cat /proc/sys/fs/inotify/max_user_watches
You should be able to run your development server or your test server after you've made the change.
inotify watchersIf the error persists, try setting a higher number of inotify watchers.
# 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
Try restarting your Nodemon, React, Angular or Jest server after you've updated
the amount of inotify watchers on your system.
If you get the error when using Webpack, try excluding the node_modules folder
from being watched by setting the watchOptions property in your
webpack.config.js file.
module.exports = { //... watchOptions: { ignored: /node_modules/, }, };
This will exclude the node_modules folder from being watched.
If none of the suggestions helped, try deleting your node_modules directory
and reinstall your dependencies.
# ๐๏ธ (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 your npm cache npm cache clean --force # ๐๏ธ install packages npm install # ๐๏ธ restart your development server
Restart your development server after removing the node_modules directory and
re-installing your project's dependencies.