반응형
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를 재부팅해도 정상적으로 실행되는 것을 확인할 수 있다.
반응형
'개발 > React' 카테고리의 다른 글
리액트 카테고리 필터 Category Filter (0) | 2022.02.27 |
---|---|
리액트 라우터 react router (최신 node ver) (2) | 2022.02.20 |
리액트 라우터 - URL query string 받아오기 (0) | 2022.02.07 |
리액트 같은 이름의 파일 재업로드 (같은 파일 다시 열기) (0) | 2021.12.03 |
React Handsontable로 csv 편집기 만들기 (19) (5) | 2021.06.29 |
댓글