프로그래밍/트러블슈팅(trouble shooting)

[Node.js] Node.js 버전 오류 및 버전 변경 방법

싯타마 2022. 10. 27. 00:44

오류

Clone 한 Node.js 버전 제한과 기존 사용하던 Node.js의 버전 차이로 인해 오류가 발생하였다.

 

 

처음 package.json을 확인했을 때 버전을 제한하는 engines 객체에서는 다음과 같았다.

 

 

그래서 npm 은 6.0.0 이상, node는 14.0.0 이상이면 될 것이라는 생각을 했고 기존 사용하던 내 Node.js의 버전은 17.8.0, npm 버전은 8.5.5 였기 때문에 오류가 안 날 것이라는 예상을 했었다.

 

하지만 콘솔 창에서 요구하는 node의 버전은 14.15.0 또는 16.10.0 또는 18.0.0 이상을 요구했고 노드의 버전을 14.15.0으로 변경해주니 정상적으로 npm install을 실행할 수 있었다.

 

- 노드 원하는 버전 설치 방법과 설치한 버전 확인하는 명령어

nvm install 14.15.0 // 원하는 노드 버전 설치
node --version // 노드 버전확인

 

 

정확한 이유는 모르겠지만 이유를 알고 싶어서 찾아보니 나와 같은 현상을 겪은 사례를 Stack Overflow에서 확인할 수 있었다.

https://stackoverflow.com/questions/70269056/cause-of-npm-warn-ebadengine

 

Cause of npm WARN EBADENGINE?

When generating a package-lock.json file with npm install, I get this error: npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: 'app@1.0.0', npm WARN EBADENGINE required: { n...

stackoverflow.com

 

Stack Overflow에서는 engines를 수정하거나 콘솔에서 요구하는 버전으로 변환해주면 된다고 한다.

아무래도 내가 사용하던 node.js의 버전은 clone 한 코드의 기능을 원활히 수행할 수 없는 version이기에 에러가 난듯하다.

 

추가로 package.json의 engines의 기능 설명을 끝으로 오늘의 포스팅을 마친다.

 

- engines

 

동작 가능한 node의 버전을 지정 할 수 있다. 사용자가 engin-strict config flag를 설정하지 않으면 해당 사항은 강제 사항이 아닌 조언용으로 사용된다.

 

예시

  "engineStrict": true,
  "engines": {
    "npm": ">=6.0.0",
    "node": ">=14.0.0"
  }