Ответ 1
Вы можете попробовать редактирование
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
Я установил новое пустое приложение для реагирования.
После установки нескольких узловых модулей я получил эту ошибку.
Я знаю, что это связано с нехваткой места для сторожа, чтобы наблюдать за всеми изменениями файлов.
Я хочу знать, какой лучший курс действий здесь предпринять?
Должен ли я игнорировать папку node_modules
, добавив ее в .watchmanconfig
?
Вы можете попробовать редактирование
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
Смысл этой ошибки в том, что количество файлов, отслеживаемых системой, достигло предела !!
Результат: команда выполнена не удалась! Или сгенерируйте предупреждение (например, запустите реактивный запуск vsocde)
Решение:
Изменить количество файлов системного мониторинга
Ubuntu
sudo gedit /etc/sysctl.conf
Добавьте строку внизу
fs.inotify.max_user_watches=524288
Затем сохраните и выйдите!
sudo sysctl -p
проверить это
Тогда это решено!
Самый простой способ решить эту ошибку - перезапустить
"Код Visual Studio не может отслеживать изменения файлов в этом большом рабочем пространстве" (ошибка ENOSPC)
Когда вы видите это уведомление, оно указывает на то, что в наблюдателе файла кода VS не хватает дескрипторов, поскольку рабочая область велика и содержит много файлов. Текущий лимит можно посмотреть, запустив:
cat /proc/sys/fs/inotify/max_user_watches
Ограничение может быть увеличено до максимума путем редактирования
/etc/sysctl.conf
и добавив эту строку в конец файла:
fs.inotify.max_user_watches=524288
Затем можно загрузить новое значение, запустив
sudo sysctl -p
Обратите внимание, что Arch Linux работает немного по-другому, подробности смотрите в разделе Увеличение количества наблюдателей inotify.
Хотя 524 288 - это максимальное количество файлов, которое можно просмотреть, если вы находитесь в среде, которая особенно ограничена в памяти, вы можете уменьшить это число. Каждый просмотр файла занимает 540 байт (32-бит) или ~ 1 КБ (64-бит), поэтому предполагается, что используются все 524 288 часов, что приводит к верхней границе около 256 МБ (32-бит) или 512 МБ (64-бит)).
Другой вариант
заключается в исключении определенных каталогов рабочей области из средства просмотра файлов VS Code с параметром files.watcherExclude. Значение по умолчанию для files.watcherExclude исключает node_modules и некоторые папки в .git, но вы можете добавить другие каталоги, которые вы не хотите, чтобы VS Code отслеживал.
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/node_modules/*/**": true
}
Вы можете исправить это, увеличивая количество наблюдателей 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, чтобы запустить его.
Технические подробности
Listen использует inotify по умолчанию в Linux для отслеживания изменений в каталогах. Нередко встречается системное ограничение на количество файлов, которые вы можете отслеживать. Например, лимит Uontu Lucid (64-битный) для inotify установлен на 8192.
Вы можете получить текущий предел просмотра файлов inotify, выполнив:
$ cat /proc/sys/fs/inotify/max_user_watches
Если этого предела недостаточно для отслеживания всех файлов в каталоге, этот предел необходимо увеличить, чтобы функция Listen работала правильно.
Вы можете установить новый лимит временно с помощью:
$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p
Если вы хотите, чтобы ваш лимит был постоянным, используйте:
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
Вам также может понадобиться обратить внимание на значения max_queued_events
и max_user_instances
, если прослушивание продолжает жаловаться.