FrontEnd

pm2 window 10 서버 실행 오류(:: Created by npm, please don't edit manually.)

김평범님 2021. 4. 16. 13:27
반응형

window10 PM2 에러해결

 

현재 프로젝트 사용하는 node project는 npm run start를 이용해서 서버를 돌리고 있다.

 

pm2란?

Node 앱 애플리케이션을 다운 타임 없이 운영할 수 있게 도와주는 프로세스 관리자 도구이다.

pm2를 활용하면 무중단 서버 운영이 가능하다.

 

pm2

 

 

나의 프로젝트를 리눅스 기반 프로젝트에서 pm2를 이용하여

run server를 돌릴 땐 아래와 같은 명령어를 이용해서 사용 중이었다.

pm2 start npm --name "appName" run start

 

리눅스에서는 위와 같은 명령어로 서버를 돌려도 문제가 없었는데

window10에서 동일한 명령어를 날려서 실행해보니 서버가 돌지 않았다.

pm2 ls로 pm2 status 상태를 확인해보니 errored가 뜨면서

서버가 제대로 돌지 못한다.

오류코드는 아래와 같이 나온다.

 

PM2 오류코드

| C:\PROGRAM FILES\NODEJS\NPM.CMD:1
| :: Created by npm, please don't edit manually.
| ^
|
| SyntaxError: Unexpected token ':'
| at Module._compile (internal/modules/cjs/loader.js:891:18)
| at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
| at Module.load (internal/modules/cjs/loader.js:811:32)
| at Function.Module._load (internal/modules/cjs/loader.js:723:14)
| at Object.<anonymous> (C:\Users\SPNG\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:32:23)
| at Module._compile (internal/modules/cjs/loader.js:955:30)
| at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
| at Module.load (internal/modules/cjs/loader.js:811:32)
| at Function.Module._load (internal/modules/cjs/loader.js:723:14)
| at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)

 

🔧해결방법 

다행히 나말고 이런 문제를 많이 겪으신 분들이 많아서 쉽게 해결방법을 찾을 수 있었다.

window에서 pm2를 이용해서 서버를 돌릴 경우는 약간 우회하는 방법이 필요하다

 

먼저 프로젝트 root 폴더에 pm2 구동 명령어를 쓸 javascript파일을 만들자.

나의 경우 app.js 로 만들겠다.

 

app.js

const exec = require('child_process').exec;
const path = require('path');

const client = exec('npm run start', {
  windowsHide: true,
  cwd: path.join(__dirname, './'),
});

client.stdout.pipe(process.stdout);
client.stderr.pipe(process.stderr);

pm2 실행 명령어

$ pm2 start app.js

파일을 만든 뒤 cmd 창에서 프로젝트 루트로 이동해서

해당 구동파일을 실행해준다.

 

이제 오류없이 잘 작동하는 것을 볼 수 있다.

해당 방법은 window10에서 pm2를 사용할 때 쓰는 방법이므로 리눅스 기반의 경우는

이런 우회방법없이 바로 사용해도 문제없다.

 

 

 

REFERENCE


jsdev.kr/t/pm2-windows/4729

 

반응형