Node.js에서 Process Management를 위해 널리 사용하는 PM2가 Windows에서는 제대로 동작하지 않아요.
구동하면 이런 에러가 나오거든요.
C:\PROGRAM FILES\NODEJS\NPM.CMD:1
(function (exports, require, module, __filename, __dirname) { :: Created by npm, please don't edit manually.
^
SyntaxError: Unexpected token :
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Object.<anonymous> (C:\Users\admin\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:53:21)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
관련이슈
그래서 회피 방법이란게 이런 코드를 작성해서 돌려줘야 합니다.
// startscript.js
const exec = require('child_process').exec;
const path = require('path');
const client = exec('npm run test:server', {
windowsHide: true,
cwd: path.join(__dirname, './'),
});
client.stdout.pipe(process.stdout);
client.stderr.pipe(process.stderr);
구동은 이렇게 하고요.
// start
pm2 start ./startscript.js
// stop
pm2 stop ./startscript.js
문제가 pm2의 ecosystem.json 파일도 못 사용해서 package.json의 scripts에서 cross-env를 사용하거나 너무 길어지면 better-npm-run 같은 모듈을 사용해야 합니다.
제가 까먹지 않기 위해 적어둡니다