Достигнуто системное ограничение на количество файловых наблюдателей при попытке запустить выставочный проект - PullRequest
0 голосов
/ 18 июня 2020

Этот вопрос, кажется, есть повсюду на SO, но ответы, похоже, не касаются моей ситуации или не отвечают ей. Я только начинаю с nodejs и реагирую нативно, поэтому я установил nodejs и выполнил следующие команды, чтобы начать работу:

$ npm install expo-cli
$ npm update
$ npx expo init helloWorld

Я выбрал «минимальный» простой рабочий процесс, а затем начал с npx expo start. npx не смог найти expo-cli, поэтому я переместил каталог node_modules в каталог helloWorld и снова начал с npx expo start. На этот раз проект запускается нормально, но сразу же выдает ошибку о превышении числа наблюдателей, скорее всего, из-за большого количества файлов, которые он пытается просмотреть после добавления каталога node_modules:

internal/fs/watchers.js:186
    throw error;
    ^

Error: ENOSPC: System limit for number of file watchers reached, watch '/home/drew/helloWorld/node_modules/css-tree'
    at FSWatcher.<computed> (internal/fs/watchers.js:178:26)
    at Object.watch (fs.js:1445:34)
    at NodeWatcher.watchdir (/home/drew/helloWorld/node_modules/sane/src/node_watcher.js:159:22)
    at Walker.<anonymous> (/home/drew/helloWorld/node_modules/sane/src/common.js:109:31)
    at Walker.emit (events.js:315:20)
    at /home/drew/helloWorld/node_modules/walker/lib/walker.js:69:16
    at FSReqCallback.oncomplete (fs.js:163:23) {
  errno: -28,
  syscall: 'watch',
  code: 'ENOSPC',
  path: '/home/drew/helloWorld/node_modules/css-tree',
  filename: '/home/drew/helloWorld/node_modules/css-tree'
}

Все верхние ответы, которые я нашел здесь, в поисках решений, связанных со сторожем, но у меня нет этого установленного и реагирующего, похоже, вместо этого используется fs.watch. один важный вопрос, который я нашел , предполагает, что нет способа добавить список игнорирования, как в стороже:

Не похоже, что это возможно. Просто взгляните на путь в слушателе и ничего не делайте, если он начинается с 'node_modules'.

Это не может быть таким большим падением производительности, если вы не обновляете модули постоянно во время работы node , что было бы немного странно.

Разве я не должен так настраивать среду разработки? Я хочу максимально изолировать проекты (исходящий из python, где virtualenv очень важен), но похоже, что это создает больше проблем, чем я ожидал. Как я могу это исправить, не прибегая к установке всего глобального?

1 Ответ

0 голосов
/ 21 июня 2020

Похоже, вы пропустили шаг после npx expo init.

При запуске npx expo start и отказе от установки expo-cli глобально вы должны были вызвать npm install --save-dev expo-cli, чтобы добавить его в зависимости в helloworld/package.json и установить его в helloworld/node_modules.

Ошибка наблюдателя возникает из-за исчерпания количества «пользовательских часов» в inotify: https://linux.die.net/man/2/inotify_add_watch

Его можно настроить с помощью sysctl, см. Соответствующие подробности здесь: { ссылка } - к сожалению, я не смог найти описание этого sysctl в документации ядра Linux.

...