#yarnpkg #pm2 #serve
Вопрос:
Я настраиваю несколько сценариев DevOps для развертывания многокомпонентной системы.
Текущая настройка. Один компонент содержит несколько статических файлов, обслуживаемых serve -s build -l 3000
. Если быть более точным, это пакет в монорепо, и в его пакете.json есть скрипт "serve": "serve -s build -l 3000",
. Вместо того , чтобы запускать его непосредственно из папки ( yarn serve
), он запускается из пакета monorepo.json как "serve-this-component": "yarn workspace this-component serve",
, так что на самом деле yarn serve-this-component
используется.
То, что я пытаюсь сделать. yarn serve-this-component
включает вывод на консоль, поэтому , чтобы он работал в фоновом режиме, я хочу использовать pm2
, что уже используется для других компонентов. Я пытаюсь реализовать это, в основном, с помощью
pm2 start yarn --name "ThisComponent" -- serve-this-component
Проблема. Неожиданно это не удается: пока yarn serve-this-component
работает, команда выше не запускает сервер. Если я открою pm2 logs "ThisComponent"
, я увижу следующую ошибку, повторенную несколько раз:
SyntaxError: missing ) after argument list
wrapSafe (internal/modules/cjs/loader.js:1054:16)
at Module._compile (internal/modules/cjs/loader.js:1102:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:33:23)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
/usr/share/yarn/bin/yarn:2
argv0=$(echo "$0" | sed -e 's,\,/,g')
^^^^
Это похоже на проблему с выводом, так как он пытается echo
что-то сделать, но pm2
обычно хорошо обрабатывает вывод, что видно через pm2 logs
. Есть идеи, как это исправить?