본문 바로가기
개발/React

리액트 - window pm2 react 구동시 syntax error 해결방법

by 피로물든딸기 2022. 2. 19.
반응형

리액트 전체 링크

 

pm2 설치 완료 후 react root 폴더에서 아래의 명령어를 실행하면 웹페이지를 계속해서 실행할 수 있다.

$ pm2 start npm -- start

 

하지만 window에서 에러가 나는 경우가 발생한다.

 

먼저 pm2 monit으로 모니터링을 해보자.

$ pm2 monit

 

다시 다른 터미널로 pm2 start npm -- start 를 실행하면 아래와 같은 로그를 볼 수 있다.

npm > SyntaxError: Invalid or unexpected token                       │
npm >     at Object.compileFunction (node:vm:352:18)                 │
npm >     at wrapSafe (node:internal/modules/cjs/loader:1026:15)     │
npm >     at Module._compile (node:internal/modules/cjs/loader:1061  │
npm >     at Object.Module._extensions..js (node:internal/modules/c  │
npm >     at Module.load (node:internal/modules/cjs/loader:975:32)   │
npm >     at Function.Module._load (node:internal/modules/cjs/loade  │
npm >     at Object.<anonymous> (C:\Users\user\AppData\Roaming\nvm  │
npm >     at Module._compile (node:internal/modules/cjs/loader:1097  │
npm >     at Object.Module._extensions..js (node:internal/modules/c  │
npm >     at Module.load (node:internal/modules/cjs/loader:975:32)

 

하지만 실제 문제가 되는 파일로 들어가보면 딱히 문제가 없다. (npm.cmd 파일)


해결방법 solution

 

위 문제는 window에서 발생하는 문제로 pm2를 우회하여 실행해야 한다.

 

아래와 같은 스크립트를 react의 root 폴더에 작성한다.

//pm2_scripts.js

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

const pm2_client = exec('npm run start', { 
    windowsHide: true, cwd: path.join(__dirname, './'), 
}); 
    
pm2_client.stdout.pipe(process.stdout); 
pm2_client.stderr.pipe(process.stderr);

 

react root 폴더에 pm2_scripts.js를 저장하였다.

 

 

이제 아래의 명령어를 실행한다.

$ pm2 start pm2_scripts.js

 

pm2 list 명령어로 조회해보면 정상 실행된 것을 확인할 수 있다.

 

완료된 후에는 pm2 save로 실행할 pm2 list를 저장한다.

그리고 pm2 resurrect를 실행해도 정상 구동되면, PC를 재부팅해도 정상적으로 실행되는 것을 확인할 수 있다.

반응형

댓글