코로 넘어져도 헤딩만 하면 그만
Error: Cannot find module 'semver' 본문
next js를 새로 학습하면서 기존 노드의 버전이 호환되지 않아 상위버전으로 업데이트를 했는데, 그 과정에서 버전 오류가 발생한 모양이다. 갑작스럽게 npm이 먹히지 않고 해당 오류가 발생했다.
npm을 사용하려 할 때마다 semver이라는 모듈을 찾을 수 없다고 뜬다.
node:internal/modules/cjs/loader:1075
const err = new Error(message);
^
Error: Cannot find module 'semver'
Require stack:
- /usr/share/nodejs/npm/lib/utils/unsupported.js
- /usr/share/nodejs/npm/lib/cli.js
- /usr/share/nodejs/npm/bin/npm-cli.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15)
at Module._load (node:internal/modules/cjs/loader:920:27)
at Module.require (node:internal/modules/cjs/loader:1141:19)
at require (node:internal/modules/cjs/helpers:110:18)
at Object.<anonymous> (/usr/share/nodejs/npm/lib/utils/unsupported.js:2:16)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Module.require (node:internal/modules/cjs/loader:1141:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/usr/share/nodejs/npm/lib/utils/unsupported.js',
'/usr/share/nodejs/npm/lib/cli.js',
'/usr/share/nodejs/npm/bin/npm-cli.js'
]
}
구글링을 조금 해보니 역시 npm 버전 오류라고.
다소 번거로워졌지만, 일단 node와 npm을 둘다 삭제하고 시작해보자.
1) node와 npm 삭제하기
sudo apt-get purge nodejs
sudo apt-get purge npm
apt-get purge 명령어: 설정파일을 포함한 패키지 파일을 모두 삭제한다.
다만 나같은 경우 위의 두 가지를 다 입력해서 삭제한 뒤에도 node -v로 확인했을 때, 최근 설치한 최신 노드 버전이 나오는 것을 확인할 수 있었다. 분명히 node js를 명령어로 삭제했는데....
중복되어 노드가 깔렸을 가능성이 있다고 해서, 실행 가능한 파일들이 모여있다는 /usr/bin 폴더까지 찾아 들어갔다. 눈으로 찾기 어려워 터미널에 아래와 같이 node가 어디에 깔려있는지 찾아보았다.
which node
그 결과, /usr/local/bin/node 라는 결과가 나왔고, 해당 위치에 node가 깔려있음을 확인했다.
sudo rm /usr/local/bin/node
를 통해 아예 이 위치에 있는 node를 싹 삭제해주자.
이제 node -v를 해도 버전이 뜨지 않는다.
user@DESKTOP-Q941PT4:/usr/bin$ node -v
-bash: /usr/local/bin/node: No such file or directory
1) node와 npm 재설치하기
다시 설치를 진행한다.
sudo apt-get install -y nodejs npm
이후 npm은 최신 버전으로 업데이트를 해준다.
sudo npm install npm
npm과 nvm은 깔려있는데, node -v를 했을 때 노드가 깔려있지 않다고 뜨는 것을 확인할 수 있었다. 그래도 일단 node만 다시 깔면 되니까...
nvm ls-remote
지원하는 node 버전을 확인한다. 그중에서도 lts버전으로 설치해주기로 했다. 이제 next js도 다룰 테니.... 18버전 이상으로 깔아야 원활하게 돌아간다고 들었기 때문이다. (실제로 기존까지 노드 16버전을 쓰고 있었는데, 여기서 오류가 발생해서 노드를 재설치하며 이렇게 꼬이게 된 것이다.)
# LTS 버전으로 설치하기
nvm install --lts
user@DESKTOP-Q941PT4:~$ node -v
v20.11.1
user@DESKTOP-Q941PT4:~$ npm -v
10.2.4
그 결과, node와 npm이 전부 잘 깔린 것을 확인할 수 있다.
노드는 20까지 업데이트가 되었다.
'Etc' 카테고리의 다른 글
node express와 씨름한 기록 (feat.백엔드 쪽이 처음인 당신) (1) | 2024.05.03 |
---|---|
qltuh.check 제거하기("로봇이 아니라면 확인을 눌러주세요") (1) | 2024.04.28 |
장보기 todoList 만들기 4 emotion의 label (0) | 2024.01.18 |
장보기 todo-List 만들기3(emotion 학습) (0) | 2024.01.16 |
장보기 todo-List 만들기2(recoil 학습) (0) | 2024.01.16 |