반응형
현재 프로젝트 사용하는 node project는 npm run start를 이용해서 서버를 돌리고 있다.
pm2란?
Node 앱 애플리케이션을 다운 타임 없이 운영할 수 있게 도와주는 프로세스 관리자 도구이다.
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
반응형
'FrontEnd' 카테고리의 다른 글
FTP(FileZilla), Putty PPK 파일 이용해서 로그인 하는 방법 (0) | 2021.07.11 |
---|---|
SNS(트위터, 페이스북)로 홈페이지 URL 공유하는 방법(소셜 공유 샘플 코드) (0) | 2021.05.02 |
[프론트앤드]페이지 렌더링 성능 확인하는 방법 (웹 페이지 속도 확인하기) (0) | 2021.03.21 |
[node.js] Database BIT 데이터 JSON에서 변환하여 사용하는 방법(Buffer) (0) | 2021.02.24 |
[크롬확장] 프런트앤드 개발에 유용한 웹 페이지 색상 확인하기(ColorPick eyedropper) (0) | 2021.02.23 |