본문 바로가기
웹 프로그래밍

[Node] node 버전 바꾸기, pm2 사용시 유의사항 (The "mode" argument must be integer. Received an instance of Object)

by Minius 2020. 8. 9.
반응형

배경

개발 서버와 실서버의 node버전이 갑자기 달라져서

한동안 애를 먹었습니다..

 

이상한 에러가 나고...

 

해결한 뒤 글을 쓰는거라 기억이 완벽하진 않겠지만

최대한 그대로 써보려고 합니다.

 

발단

먼저 이와 같은 에러가 났습니다.

The "mode" argument must be integer. Received an instance of Object

 

여기서 가장 큰 문제였던 것 중 하나...

우리의 프로젝트에서 "mode"라는 변수를 써서 우리 변수의 문제인 줄 알았던 것,

또한 integer 검사를 하는 것으로 보아, 우리도 같은 검사를 하기에 우리의 변수라고 한번 더 확신했던 것.

이었습니다.

 

 

자포자기한 마음으로 그런 고정관념을 버리고 위의 문구를 그대로 검색했더니,

아니 "mode"는 빼고 검색했습니다. 아직도 고정관념을 버리진 못했나봅니다.

 

정확히 같은 에러.. "mode" 까지!

저와 같은 문제를 겪는 친구가 있었습니다.

정말 반가웠습니다.

 

답변

답변은

노드 버전..?

여기서 1차적인 문제를 해결할 수 있었습니다.

nvm이 깔려 있어서 쉽게 교체 했습니다.

CLI에 nvm 을 치면 많은 도움말이 나오는데, 골라서 써 보겠습니다.

 

nvm 도움말

nvm install <version>		// 특정 버전 설치
nvm uninstall <version>		// 특정 버전 삭제
nvm use <version>		// 특정 버전 사용
nvm alias default <version>	// 특정 버전 default 값으로 사용

간추려서 위에 적은 정도만 쓰면 됩니다.

 

다운그레이드

nvm으로 제가 원래 쓰던 13.12.0을 설치하고

기존의 14.5.0을 삭제하고

default 로 설정까지 해주었습니다.

 

그리고 pm2 start all로 실행을 시켜주는데 계속 원래 있던 14.5을 찾습니다..

찾지마

삭제하고 없는데 뭘 계속 찾냐.. 하며

저 경로도 검색해보고

노드 버전 변경을 잘못했나 해서 계속 검색해보고 하던 중

 

npm start는 되는데

pm2 start가 안되는 것이었습니다.

 

그리고 "ProcessContainerFork.js"을 검색하게 되었습니다.

 

기존 설정 삭제 및 결과

pm2 설정을 삭제하고 다시 실행함으로써 해결하였습니다. pm2에 기존 설정이 남아있었나 봅니다.

// .pm2 폴더의 모든 것을 삭제
rm -rf ~/.pm2

// pm2 실행해보기, 및 재설정
pm2

삭제하고 재실행하는 명령어입니다. 각 프로젝트별로 실행을 다시 해주니 잘 되었습니다.

 

출처

pm2 부분 출처: https://itzone.tistory.com/677

 

NodeJS pm2 ProcessContainerFork.js 오류 대응

$ node app.js 로는 실행 후 포트 리스닝이 문제 없는데 pm2 로 start 시 포트 리스닝이 계속 안되는 문제가 발생! 자세한 pm2 프로세스 상태를 보기 위해 $ pm2 show 명령 실행 에러 로그 경로를 확인 error

itzone.tistory.com

댓글