Node.JS: Получение ошибки: [nodemon] Ошибка внутреннего наблюдения: смотрите ENOSPC

136

Я только что впервые установил Node.jsсвою Ubuntu 14.04операционную систему. Я тоже установил npm. Следующим шагом в процессе установки была установка nodemon. Все прошло нормально.


Но когда я запускаю nodemon, набирая nodemon app.jsкомандную строку, я получаю следующую ошибку ...

[nodemon] 1.8.1 [nodemon] to restart at any time, enterRS [nodemon] watching: *.* [nodemon] startingузел app.js [nodemon] Internal watch failed: watch ENOSPC

В командной строке под ошибкой ...

alopex@Alopex:~/Desktop/coding_dojo/week-9/javascript/node/testing_node$ Hello World

Почему это происходит? Это нормальное поведение для nodemon? Если нет, то как это исправить?


Боковые примечания ...

1) app.js- это Javascriptфайл, console.log(111)внутри которого находится.
2) nodeверсия v0.10.25
3) npmверсия 1.3.10
4) nodemonверсия 1.8.1
5) ubuntuверсия ...

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty
Эрик Осланд
источник

Ответы:

452

Похоже, что мои максимальные порты были настроены неправильно. Я запустил следующий код, и он сработал ...

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

Эта команда увеличивает количество часов, разрешенных для одного пользователя. По умолчанию число может быть небольшим (например, 8192). При nodemonпопытке просмотреть большое количество каталогов на предмет изменений, он должен создать несколько наблюдений, которые могут превысить этот предел.

Вы также можете решить эту проблему:

sudo sysctl fs.inotify.max_user_watches=582222 && sudo sysctl -p

Но то, как это было написано изначально, сделает это изменение постоянным.

Эрик Осланд
источник
6
Может ли кто-нибудь объяснить немного больше, что это делает, и уточнить, почему это может помочь?
Hinrich
11
@Hinrich, это всего лишь предположение, я думаю, что nodejs наблюдает за изменениями файловой системы через библиотеку inotify. Я думаю, что для каждого пользователя существует ограничение на максимальное количество часов, которое этот параметр изменяет на большее значение.
ᐅ devrimbaris
2
@devrimbaris Правильно!
Эрик Осланд
3
Это случилось со мной только что после перехода с Ubuntu 14.04 на Ubuntu 16.04. Ваше решение сработало и для меня. Спасибо
Местре Сан
2
Наденьте это, /etc/sysctl.d/90-override.confесли вы на Arch
OverCoder
28

Эрик, вы можете просто убить все остальные процессы узла

pkill -f узел

а затем снова перезапустите сервер. Тогда это будет работать нормально.

pawanpandey392
источник
7
Голосовать против, потому что это также привело к зависанию окон Visual Studio Code.
LexH
это работало как шарм ... до сих пор! Теперь это неэффективно, возникает такая же ошибка.
пустельга
28

На запущенном сервере узла отображаются следующие ошибки и решения:

nodemon server.js

[nodemon] 1.17.2

[nodemon] для перезапуска в любое время введите rs

[nodemon] Наблюдение: .

[nodemon] запускается node server.js

[nodemon] Ошибка внутреннего наблюдения: watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

или

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Мани Аби Ананд
источник
19

Согласно обсуждению здесь , ENOSPCозначает Error No more hard-disk space available. Причина, по которой такой большой объем памяти требуется nodemonили gulp-nodemon(в моем случае), заключается в том, что он просматривает содержимое папки, чего не должно. Чтобы исправить это, у nodemon есть ignoreпараметр, который можно использовать, чтобы сказать nodemon, что не смотреть. Взгляните на образец конфигурации nodemon здесь .

Зубаир Алам
источник
Хорошая работа, это основная причина.
lutaoact
16
[nodemon] Internal watch failed: watch /home/Document/nmmExpressServer/bin ENOSPC
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! nmmexpressserver@0.0.0 start: `nodemon ./bin/www`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the nmmexpressserver@0.0.0 start script.

Это ошибка, которую я получил при запуске nodemon ./bin/www.

Решение заключалось в закрытии окна Atom, в котором был открыт весь каталог папок в окне проекта.

Не знаю почему, но предполагаю, что Atom и nodemon используют похожие процессы для просмотра файлов / папок.

codeinaire
источник
2
Это была моя проблема. Я случайно запустил атом из каталога установки проекта. Я закрыл атом, запустил его из другого каталога, и проблема исчезла.
Я.
В моем случае то же самое происходило в Sublime в Ubuntu. Когда я закрыл IDE, я смог запустить ее правильно. Какие-нибудь советы по этому поводу?
Shad
Я не пытался воспроизвести это, чтобы увидеть, исправлено ли это.
codeinaire
Спасибо. Моя может работать после закрытия Gitkraken. Это странная проблема. Значит, два процесса не могут контролировать одну и ту же папку?
Zhang LongQI
Это был клиент Nextcloud, который использует множество часов inotify. Спасибо всем!
Билл МакГонигл
8

Попробуй это....

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

Будет демонстративно работать

МД ШАЙОН
источник
1
Мне нравится бунтарский характер этого неповиновения
SimplyKnownAsG
7

Добавьте nodemon.jsonфайл конфигурации в корневую папку и укажите шаблоны игнорирования, например:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Обратите внимание , что по умолчанию .git, node_modules, bower_components, .nyc_output, coverageи .sass-cacheигнорируются , так что вам не нужно , чтобы добавить их в конфигурацию.

Объяснение: Эта ошибка возникает из-за того, что вы превысили максимальное количество наблюдателей, разрешенное вашей системой (т.е. nodemonу вас больше нет места на диске для просмотра всех файлов - что, вероятно, означает, что вы просматриваете не важные файлы). Таким образом, вы игнорируете неважные файлы, которые вам не нужны, например, результаты сборки или тестовые примеры.

Ахмед Солиман
источник
6
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Это сработало для меня

iClass Chima
источник
1
Пожалуйста, объясните, как это отвечает на вопрос.
Джейсон Аллер,
Сработало правильно
Rohit Parte
3

в моем случае закрытие кода Visual Studio, а затем запуск сервера сделали трюк

Операционная система - ubuntu 16.4 lts

версия node.js - 8.11.1

версия npm - 6.0.0

Вишал Верма
источник
Похоже, он не использовал визуальную студию.
Жюльен Рево
1
Хотя это не дает прямого ответа на вопрос (потому что вопрос не касается кода VS), это действительно решило мою проблему.
Chasen Bettinger
2

Вместо указания списка каталогов, которые следует игнорировать (например, отрицательных), вы также можете указать список каталогов для просмотра (например, положительных):

nodemon --watch dir1 --watch dir2  dir1/examples/index.js

В моем конкретном случае у меня был один каталог, который я хотел посмотреть, и около девяти я хотел игнорировать, поэтому указать --watch »было намного проще, чем указать --ignore.

vt5491
источник
0

У меня была такая же ошибка, но в Ubuntu 14.04 внутри Windows 10 (Bash в Ubuntu в Windows). Все, что я сделал, чтобы преодолеть ошибку, - это обновить обновление Creators, которое затем позволило мне установить версию Ubuntu bash 16.04, а затем, после установки последней версии node (с помощью этих шагов), я установил также новейшую версию npm, а затем nodemon начал нормально работать.

Шимон Грабец
источник
0

Если операционная система Linux, просто используйте ее, она будет работать

 sudo npm run server
Сиддхартха Мукерджи
источник