Почему мои файлы css/js не могут быть найдены, когда systemd перезапускает мое приложение node.js?

У меня есть приложение node.js, которое я пытаюсь развернуть в производственном режиме, используя systemd, чтобы перезапустить его в случае сбоя / перезагрузки сервера. Приложение работает нормально, когда я запускаю его, используя 'node app.js' (т.е. все мои публичные файлы найдены). Однако, когда я завершаю процесс и systemd перезапускает его, Express больше не может найти мои файлы css/js. Я использую connect-assets для объединения моих файлов css/js.

Я думаю, что проблема в моем пути к узлу, но я не совсем уверен. Это ошибка, которую я вижу в своем браузере, когда systemd перезапускает приложение:

500 Error ...
> 11| != css('styles')
12| != js('application')
No file found for route css/styles.css

Когда я проверяю процесс, который я запустил вручную с помощью команды 'node app.js', я вижу:

ghost   30222  6.8 17.8 140348 90848 pts/0    Sl+  18:01   0:08 node app.js

И когда systemd перезапускает приложение, я вижу следующее:

ghost   30332  5.5  9.1  94036 46516 ?        Ssl  18:05   0:01 /usr/local/bin/node /home/ghost/myapp/app.js

Вот мой сервисный файл:

[Service]
ExecStart=/usr/local/bin/node /home/ghost/myapp/app.js 
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-sample
User=ghost
Group=ghost
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

1 ответ

Вам нужно установить WorkingDirectory= в каталог верхнего уровня вашего Node-приложения, где бы он ни находился.

Например:

WorkingDirectory=/home/ghost/myapp

или для глобально установленных приложений,

WorkingDirectory=/usr/lib/node_modules/myapp
Другие вопросы по тегам