Express.js с компасом не работает с PM2

Я использовал express-generator для создания проекта с движком таблицы стилей компаса:

express --css compass app

Приложение, как и ожидалось, когда я начинаю использовать npm start (или node ./bin/www, fwiw).

Однако, когда я использую pm2 для запуска приложения, поскольку pm2 start ./bin/www приложение запускается и возвращает ответ html, но CSS дает сбой, когда браузер запрашивает его, процесс умирает, и pm2 перезапускает его. Это связано с nginx, который возвращает 502 Bad Gateway.

Это журналы pm2:

0|www      | GET /home 200 320.238 ms - 914
0|www      | Error: spawn compass ENOENT
0|www      |     at exports._errnoException (util.js:1050:11)
0|www      |     at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
0|www      |     at onErrorNT (internal/child_process.js:367:16)
0|www      |     at _combinedTickCallback (internal/process/next_tick.js:80:11)
0|www      |     at process._tickDomainCallback (internal/process/next_tick.js:128:9)
PM2        | App [www] with id [0] and pid [6624], exited with code [1] via signal [SIGINT]
PM2        | Starting execution sequence in -fork mode- for app name:www id:0
PM2        | App name:www id:0 online

Я не могу найти никакой информации о том, почему это происходит и почему это работает с узлом, но не с pm2. Любая помощь приветствуется.


person rgthree    schedule 21.05.2017    source источник


Ответы (1)


Compass — это нативная зависимость, которую необходимо установить.

$ gem update --system
$ gem install compass

В противном случае, и я настоятельно советую, вам следует скомпилировать свои таблицы стилей компаса, не только потому, что попадание на сервер высокое и ненужное.

Связано: SO.

person eljefedelrodeodeljefe    schedule 21.05.2017
comment
Да, он установлен. Возможно, я мог бы упомянуть об этом отдельно, но я сказал, что все работает, как и ожидалось, при запуске с использованием node bin/www (включая компас). - person rgthree; 21.05.2017
comment
Да, но остальное стоит. Здесь выполняется много слоев (процессов), и об этом трудно рассуждать. Вы запускаете какой-то скрипт из узла в процессе вашего узла в ваших процессах pm2. Статическая компиляция таблиц стилей здесь должна быть наилучшей, так как вы не можете точно сказать, какой скрипт откуда выполняется или с каким, скажем, cwd, на который, вероятно, указывает ENOENT. - person eljefedelrodeodeljefe; 21.05.2017
comment
Кроме того, когда я проверяю вашу часть генерации, я даже не могу ее запустить. Неудивительно из-за 2-летней зависимости компаса. - person eljefedelrodeodeljefe; 21.05.2017