Я изучаю graphql и использую prisma-binding для операций с графом. Я сталкиваюсь с этой ошибкой nodemon, когда запускаю свой сервер узла, и он дает мне путь к файлу схемы, который автоматически создается graphql-cli. Может ли кто-нибудь сказать мне, в чем суть этой ошибки?
Ошибка:
Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/media/rehan-sattar/Development/All projects/GrpahQl/graph-ql-course/graphql-prisma/src/generated
Пробовал это! Опять та же ошибка!
Вероятно, вы просматриваете слишком много файлов. Может быть, он также включает каталог nod_modules?
node_modules необходимы, потому что там есть все пакеты. Я пытался убить предыдущие процессы, запущенные на порту моего сервера, у меня это сработало, но я не знаю, сколько времени это займет сейчас: D





Иногда у меня возникает эта проблема при работе с VSCode на моем компьютере с Ubuntu.
В моем случае помогает следующий обходной путь:
остановите наблюдателя, закройте VScode, запустите наблюдатель, снова откройте VSCode.
Верно! Из-за VSCode. Должен быть режим автосохранения.
это сработало для меня; разработка с помощью ember-cli
Поскольку с моим фокусным окном, это происходит периодически, и перезапуск VSCode - это исправление без возни с / max-_user_watches. (примечание: когда он работает, я обычно вижу используемых наблюдателей значительно ниже 7k)
В Linux я действительно работал с sudo.
sudo npm start
Это часто срабатывает, потому что root обычно имеет гораздо более высокий лимит просмотра inotify, чем обычные пользователи, но очень - плохая идея запускать что-то от имени root, когда в этом нет необходимости. См. мой ответ на этот вопрос, чтобы узнать, как изменить лимит пользователя.
Вам необходимо увеличить лимит наблюдателей inotify для пользователей вашей системы. Вы можете сделать это из командной строки с помощью:
sudo sysctl -w fs.inotify.max_user_watches=100000
Однако это будет продолжаться только до перезагрузки. Чтобы сделать это постоянным, добавьте файл с именем /etc/sysctl.d/10-user-watches.conf со следующим содержимым:
fs.inotify.max_user_watches = 100000
После внесения вышеуказанного (или любого другого) изменения вы можете перезагрузить настройки из всех файлов конфигурации sysctl в /etc с помощью sudo sysctl -p.
Большое спасибо! Сработало у меня !! Но куда мне добавить этот файл?
@RehanSattar Создайте файл /etc/sysctl.d/10-user-watches.conf и поместите в него fs.inotify.max_user_watches = 100000.
Помещаю здесь для полноты картины echo fs.inotify.max_user_watches=100000 | sudo tee /etc/sysctl.d/10-user-watches.conf && sudo sysctl -p.
используйте sysctl --system для перезагрузки для более свежих систем
Если вы используете Linux, ваш проект достигает предела файловых наблюдателей вашей системы.
Чтобы исправить это, попробуйте на своем терминале:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
используйте sysctl --system для перезагрузки для более свежих систем
есть ли какие-то другие последствия, которые мы должны знать, когда мы это делаем? Я знал, что это помогает решить проблему, я сам пробовал. Но я немного скептически отношусь к возможным побочным эффектам, которые может вызвать это исправление.
@Aldee о технических последствиях этого изменения, я рекомендую проверить эту вики: github.com/guard/listen/wiki/…
Это также помогло решить множество проблем с плагинами npm. Спасибо
Спасибо! У меня была такая же ошибка в проекте React, который я только что создал, и она исправлена.
Я бы не рекомендовал так сильно увеличивать его, если вы не знаете, сколько из них уже используется. Проверьте используемый номер с помощью следующего find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | xargs cat | grep -c '^inotify'.
У меня на самом деле есть max_user_watches 4288 и исключен из nodemonconfig в package.json.git и node_modules. Интересно, почему осталось так много файлов, которые приводят к ошибке.
Значение по умолчанию (в Ubuntu 21) было 65535, и установка его вдвое больше (131070) устранила для меня проблемы с Node JS. Итак, в соответствии с принципом минимизации побочных эффектов, стоит попробовать меньшие приращения, прежде чем переходить к 500k.
Чтобы проверить изменения, я временно установил параметр со значением 524288.
sysctl -w fs.inotify.max_user_watches=524288
затем я перехожу к проверке:
npm run serve
И проблема была решена, чтобы сделать ее постоянной, вы должны попробовать добавить строку в файл "/etc/sysctl.conf", а затем перезапустить службу sysctl:
cat /etc/sysctl.conf |tail -n 2
fs.inotify.max_user_watches=524288
sudo systemctl restart systemd-sysctl.service
Эта подсказка для проверки на время бесценна. Спасибо
Может быть трудно понять, на сколько увеличить количество наблюдателей. Итак, вот утилита для удвоения количества наблюдателей:
function get_inode_watcher_count() {
find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null |
xargs cat |
grep -c '^inotify'
}
function set_inode_watchers() {
sudo sysctl -w fs.inotify.max_user_watches = "$1"
}
function double_inode_watchers() {
watcher_count = "$(get_inode_watcher_count)"
set_inode_watchers "$((watcher_count * 2))"
if test "$1" = "-p" || test "$1" = "--persist"; then
echo "fs.inotify.max_user_watches = $((watcher_count * 2))" > /etc/sysctl.d/10-user-watches.conf
fi
}
# Usage
double_inode_watchers
# to make the change persistent
double_inode_watchers --persist
У меня была такая же проблема, но моя исходила из веб-пакета. К счастью, у них есть отличное решение на их сайте:
For some systems, watching many files can result in a lot of CPU or memory usage. It is possible to exclude a huge folder like node_modules using a regular expression:
webpack.config.js
module.exports = {
watchOptions: {
ignored: /node_modules/
}
};
В моем случае, пока я выполняю команду nodemon на сервере Linux. У меня открыт VSCode (SSH к серверу). Итак, основываясь на ответе @Juri Sinitson, я просто закрываю VSCode и снова запускаю команду nodemon. И это работает.
Моя команда nodemon:
nodemon server.js через запуск npm
У меня тоже сработало. У меня было в основном два открытых VSCode. Закрытие предыдущего решило проблему.
Это ошибка ulimit linux, см. Здесь stackoverflow.com/questions/34588/…