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] startingnode app.js [nodemon] Internal watch failed: watch ENOSPC

У командному рядку нижче помилки ...

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

Чому це відбувається? Це нормальна поведінка для нодемона? Якщо ні, як я можу це виправити?


Бічні нотатки ...

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

Відповіді:


451

Здається, що мої максимальні порти неправильно налаштовані. Я запустив наступний код, і він спрацював ...

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
Невже хтось може трохи більше пояснити, що це робить, і пояснити, чому це може допомогти?
Генріх

11
@Hinrich, це лише здогадка, я думаю, що nodejs спостерігає за зміною файлової системи через інотифіковану бібліотеку. Я думаю, що для користувача існує обмеження на максимальну кількість годин, яке ця настройка змінює на більшу величину.
ᐅ devrimbaris

2
@devrimbaris Правильно!
Ерік Есланд

3
Це щойно трапилося зі мною після переходу з Ubuntu 14.04 до Ubuntu 16.04. Ваше рішення працювало і на мене. Дякую
Mestre San

2
Поставте це, /etc/sysctl.d/90-override.confякщо ви на Arch
OverCoder

28

Еріку, ти можеш просто вбити всі інші процеси вузлів

pkill -f вузол

а потім знову перезавантажте сервер. Тоді це буде добре працювати.


7
Downvote тому, що це також спричинило замерзання моїх вікон Visual Studio Code.
LexH

це працювало як шарм ... досі! Тепер це неефективно, отримуючи ту ж помилку.
пустушка

28

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

nodemon server.js

[нодемон] 1.17.2

[nodemon] щоб перезапустити в будь-який час, введіть rs

[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 використовують подібні процеси для перегляду файлів / папок.


2
Це була саме моя проблема. Мені траплялося запускати атом із каталогу встановлення проекту. Я закрив атом, запустив його з іншого режиму, і проблема пішла.
Я.

У моєму випадку те саме відбувалося на Sublime в Ubuntu. Коли я закрив IDE, я міг правильно його запустити. Якісь поради щодо цього?
Шад

Я не намагався повторити це, щоб побачити, чи було виправлено.
кодеар

Дякую. Шахта може працювати після закриття Gitkraken. Це дивна проблема. Отже, це означає, що у нас не може бути двох процесів, що контролюють одну і ту ж папку?
Чжан Лонгкі

Тут був клієнт Nextcloud - який використовує тонну інотифікованих годинників. Дякую, ви всі!
Білл МакГонігле

8

Спробуйте це....

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

Буде заперечно працювати


1
Мені подобається непокірний характер цього протистояння
SimplyK knownAsG

7

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

nodemon.json

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

Пояснення: Ця помилка трапляється тому, що ви перевищили максимальну кількість спостерігачів, дозволену вашою системою (тобто nodemonнемає більше дискового простору для перегляду всіх файлів - це, ймовірно, означає, що ви переглядаєте не важливі файли). Таким чином, ви ігноруєте неважливі файли, які вам не цікавлять зміни в них, наприклад, вихід збірки або тестові випадки.



3

у моєму випадку закриття коду візуальної студії та запуск сервера зробив свою справу

Операційна система - 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"


0

У мене була така ж помилка, але в Ubuntu 14.04 всередині Windows 10 (Bash on Ubuntu в Windows). Все, що я зробив, щоб подолати помилку - це оновлення оновлення Creators, яке потім дозволило мені встановити 16.04 версію Ubuntu bash, а потім після встановлення новітньої версії вузла (за цими кроками) я встановив також новітню версію npm, а потім nodemon почали правильно працювати.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.