Ошибка Error: watch ENOSPC в gulp и grunt при запуске команды watch на ubuntu
Мое изучение галпа началось не совсем удачно. После установки и создания проекта в ответ на gulp watch
, он встретил меня ошибкой Error: watch ENOSPC
. К счастью, причина нашлась достаточно быстро и была решена. А теперь немного подробнее об этом.
Команда watch
, как понятно из названия, отслеживает изменение файлов и запускает необходимые скрипты. Вот тут и таится "опасность". Если в проекте достаточно много файлов, то процесс падает и возвещает об ошибке примерно так:
[11:34:08] Using gulpfile ~/www/assets/gulpfile.js [11:34:08] Starting 'watch'... [11:34:08] 'watch' errored after 151 ms [11:34:08] Error: watch ENOSPC at errnoException (fs.js:1024:11) at FSWatcher.start (fs.js:1056:11) at Object.fs.watch (fs.js:1081:11)
Так вот проблема заключается в настройке ядра ОС, точнее в подсистеме inotify
ядра linux
, которая получает уведомления о событиях, связанных с файлами и каталогами. Она имеет три параметра, но нас интересует max_user_watches
- количество файлов, отслеживаемых одним пользователем системы. Вот именно его и необходимо увеличить, задав для него большое значение. Ниже приведу пример команды для данной манипуляции:
echo fs.inotify.max_user_watches=500000 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
На этом все. Запускаем gulp watch
и наблюдаем за корректностью его работы.
P.S. Данная проблема также проявляется при использовании grunt watch
, так как он имеет схожий принцип работы. Решение для него аналогичное.