Ошибка: EBADF, неверный файловый дескриптор при запуске узла с использованием nohup of forever

У меня проблема с node.js, на котором запущен небольшой веб-сервер, обслуживающий файлы из файловой системы. При запуске с node server.js он работает как шарм, но при запуске с nohup или forever node.js не может найти файлы.


person javabeangrinder    schedule 17.05.2013    source источник


Ответы (3)


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

nohup node server.js </dev/null
person forzagreen    schedule 01.08.2016
comment
Понятия не имею, почему, но это работает. < /dev/null отключает ручной ввод команды nohup, но как это связано с путем к файлу, я не знаю. Я лично использовал супервизора, а не вечно, но ошибка была той же. Я добавлю, что в этом не было необходимости, пока обновление в супервизоре не заставило его слушать ручной ввод. - person Louis Ameline; 02.05.2017

Другое решение - запустить команду в подоболочке с использованием круглых скобок. (nohup node index.js)

person Jk Jensen    schedule 12.08.2016

Оказалось, что это путь к файлу, в котором возникла проблема. При запуске сервера с использованием узла рабочий каталог совпадает с файлом server.js, поэтому node.js удается найти файл.

При запуске с использованием nohup или просто при запуске с вечностью рабочий каталог, похоже, не такой же, как server.js.

Я решил это, добавив к имени файла глобальную переменную __dirname.

person javabeangrinder    schedule 17.05.2013
comment
Не могли бы вы поделиться полной командой после добавления глобальной переменной __dirname - person Monti Chandra; 26.07.2018
comment
Вы можете поделиться дополнительной информацией? Я также испытываю это в Windows - person Xin; 26.11.2019
comment
@Xin Я использовал __dirname в коде сервера для получения файлов. Не при запуске сервера навсегда. - person javabeangrinder; 02.12.2019