Node.js: что такое ошибка ENOSPC и как ее решить?

У меня проблема с Node.js и загрузкой файлов на сервер. Для загрузки файлов на сервер я использую этот плагин. При запуске загрузки файла на сервер произошел сбой процесса Node.js, который выдает ошибку:

Ошибка: ENOSPC.

Код сервера не работает.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  4.1G  3.5G  55% /
udev            288M  8.0K  288M   1% /dev
tmpfs           119M  168K  118M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            296M     0  296M   0% /run/shm
/dev/xvdf       9.9G  3.0G  6.5G  32% /vol
overflow        1.0M  1.0M     0 100% /tmp

Ответ 1

Запустите приведенную ниже команду, чтобы избежать ENOSPC:

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

Для Arch Linux добавьте эту строку в /etc/sysctl.d/99-sysctl.conf:

fs.inotify.max_user_watches=524288

Затем выполните:

sysctl --system

Это также будет сохраняться при перезагрузке. Техническая информация Источник

Ответ 2

ENOSPC означает, что на диске нет места.

Возможно, /tmp заполнен? Вы можете настроить npm на использование другой временной папки, установив npm config set tmp /path/to/some/other/dir или, возможно, удалить все из папки /tmp.

Источник: npm 1.1.21 не может писать, ENOSPC в npm repo в github.

Примечание. Я решил свою проблему так, как описано выше. Однако см. Murali Krishna answer ниже, что более полно.

Ответ 4

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

Ответ 5

Простой способ решить мою проблему:

npm cache clear

npm или процесс, контролируемый им, просматривает слишком много файлов. Обновление max_user_watches на узле сборки может исправить это навсегда. Для debian установите на терминале следующее:

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

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

Ответ 6

Если ваш монтируемый /tmp файловая система Linux монтируется как переполнение (часто размером 1 МБ), это, вероятно, связано с тем, что вы не указали /tmp как свой собственный раздел, а ваша корневая файловая система была заполнена, а /tmp была восстановлен как резерв.

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

sudo umount overflow

Ответ 7

Я решил свою проблему, убив все процессы отслеживания трекера (вы можете попробовать, если используете GDM, очевидно, не ваш случай, если script работает на сервере)

tracker-control -r

Моя настройка: Arch с GNOME 3

Ответ 8

Для меня я достиг максимального количества файлов, которыми может владеть пользователь

Проверьте свои номера с помощью quota -s и что число под файлами не слишком близко к квоте

Ответ 9

Если вы столкнулись с этой ошибкой при попытке запустить команду ember server, пожалуйста, rm -rf tmp. Затем запустите ember s снова. Это помогло мне.

Ответ 10

для тех, кто на локальном компьютере, просто закройте терминал и перезапустите, он работает для меня

Ответ 11

В Ubuntu 18.04 я попробовал трюк, который использовался для повторной активации просмотра файла по ionic/node, и он также работает здесь. Это может быть полезно для тех, кто не имеет доступа к системным файлам conf.

CHOKIDAR_USEPOLLING=1 npm start

Ответ 12

У меня была та же ошибка. Пока я запускаю приложение Reactjs. Я просто удаляю папку node_modules, набираю и снова устанавливаю node_modules. Это устранит ошибку.

Ответ 13

В моем случае, в linux, sudoing исправил проблему.

Пример:

sudo gulp dev