Ошибка Nodemon: достигнуто системное ограничение на количество наблюдателей за файлами

Я изучаю 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

Это ошибка ulimit linux, см. Здесь stackoverflow.com/questions/34588/…

Janith 26.12.2018 10:54

Пробовал это! Опять та же ошибка!

Rehan Sattar 26.12.2018 11:27

Вероятно, вы просматриваете слишком много файлов. Может быть, он также включает каталог nod_modules?

Mikkel 27.12.2018 01:10
node_modules необходимы, потому что там есть все пакеты. Я пытался убить предыдущие процессы, запущенные на порту моего сервера, у меня это сработало, но я не знаю, сколько времени это займет сейчас: D
Rehan Sattar 27.12.2018 06:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
174
4
130 425
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Иногда у меня возникает эта проблема при работе с VSCode на моем компьютере с Ubuntu.

В моем случае помогает следующий обходной путь:

остановите наблюдателя, закройте VScode, запустите наблюдатель, снова откройте VSCode.

Верно! Из-за VSCode. Должен быть режим автосохранения.

Hùng Ng Vi 02.04.2019 17:18

это сработало для меня; разработка с помощью ember-cli

reiallenramos 20.01.2021 07:23

Поскольку с моим фокусным окном, это происходит периодически, и перезапуск VSCode - это исправление без возни с / max-_user_watches. (примечание: когда он работает, я обычно вижу используемых наблюдателей значительно ниже 7k)

CNSKnight 14.09.2021 16:43

В Linux я действительно работал с sudo. sudo npm start

Это часто срабатывает, потому что root обычно имеет гораздо более высокий лимит просмотра inotify, чем обычные пользователи, но очень - плохая идея запускать что-то от имени root, когда в этом нет необходимости. См. мой ответ на этот вопрос, чтобы узнать, как изменить лимит пользователя.

cjs 29.03.2019 07:12

Вам необходимо увеличить лимит наблюдателей 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.

Большое спасибо! Сработало у меня !! Но куда мне добавить этот файл?

Rehan Sattar 06.04.2019 11:11

@RehanSattar Создайте файл /etc/sysctl.d/10-user-watches.conf и поместите в него fs.inotify.max_user_watches = 100000.

cjs 06.04.2019 12:32

Помещаю здесь для полноты картины echo fs.inotify.max_user_watches=100000 | sudo tee /etc/sysctl.d/10-user-watches.conf && sudo sysctl -p.

RedHatter 21.10.2019 23:30

используйте sysctl --system для перезагрузки для более свежих систем

YLJ 06.03.2020 14:03
Ответ принят как подходящий

Если вы используете Linux, ваш проект достигает предела файловых наблюдателей вашей системы.

Чтобы исправить это, попробуйте на своем терминале:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

используйте sysctl --system для перезагрузки для более свежих систем

YLJ 06.03.2020 14:03

есть ли какие-то другие последствия, которые мы должны знать, когда мы это делаем? Я знал, что это помогает решить проблему, я сам пробовал. Но я немного скептически отношусь к возможным побочным эффектам, которые может вызвать это исправление.

Aldee 15.05.2020 04:45

@Aldee о технических последствиях этого изменения, я рекомендую проверить эту вики: github.com/guard/listen/wiki/…

Isac Moura 15.05.2020 06:26

Это также помогло решить множество проблем с плагинами npm. Спасибо

The Bumpaster 08.07.2020 23:00

Спасибо! У меня была такая же ошибка в проекте React, который я только что создал, и она исправлена.

user10021033 27.08.2020 14:14

Я бы не рекомендовал так сильно увеличивать его, если вы не знаете, сколько из них уже используется. Проверьте используемый номер с помощью следующего find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | xargs cat | grep -c '^inotify'.

Nick Bull 25.09.2020 14:16

У меня на самом деле есть max_user_watches 4288 и исключен из nodemonconfig в package.json.git и node_modules. Интересно, почему осталось так много файлов, которые приводят к ошибке.

Timo 25.05.2021 21:34

Значение по умолчанию (в Ubuntu 21) было 65535, и установка его вдвое больше (131070) устранила для меня проблемы с Node JS. Итак, в соответствии с принципом минимизации побочных эффектов, стоит попробовать меньшие приращения, прежде чем переходить к 500k.

Dmitriy 19.07.2021 03:41

Чтобы проверить изменения, я временно установил параметр со значением 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

Эта подсказка для проверки на время бесценна. Спасибо

intmarinoreturn0 29.12.2020 21:27

Может быть трудно понять, на сколько увеличить количество наблюдателей. Итак, вот утилита для удвоения количества наблюдателей:

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. Закрытие предыдущего решило проблему.

iheathers 19.12.2021 10:05

Другие вопросы по теме