회사 업무를 집에서 봐야할때나 재택근무를 할떄 TeamViewer라는 원격프로그램을 이용해서 회사 컴퓨터를 집 컴퓨터에서 사용할수 있도록 원격 환경을 만들어서 수행했었는데 집에서 회사 업무 환경 세팅도 해둘겸 세팅하는거 다시한번 해볼겸 집에 회사 개발환경을 세팅해보기로했다... ( 사실 최근에 신입분 세팅을 도와주는데 다 까먹어서 살짝 현타가 오기도했다. )
이전에 잘 안되던 부분도 어찌어찌 잘 해결했는데 npm i 가 안되는것이다...
도대체 왜안되는거지!!
npm WARN @name@version No repository field.
npm ERR! code ENOENT
npm ERR! syscall rename
npm ERR! path /home/cine/개인정보보호차.../node_modules/@types/node
npm ERR! dest /home/cine/개인정보보호차.../node_modules/@types/.node.DELETE
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, rename '/home/cine/개인정보보호차.../node_modules/@types/node' -> '/home/cine/개인정보보호.../@types/.node.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
일단 에러는 이렇다...
처음에는 Warning 때문에 안되는줄 알았다.
그래서 찾아보니
package.json에 "private": true, 를 설정하라는 글이 많았는데 해당 사례는 아니었다.
WARN은 경고일뿐 크리티컬한 부분은 아니기 때문에 사실 되긴해야하는데,,,
그러면 결국 npm ERR 이부분이 문제라는건데 여러가지 시도를 해보았다.
시도1. npm 업그레이드
npm update
위 명령어를 실행했더니 결국에는 같은 오류가 발생하였다... npm 자체가 문제인거같기도 하고 우선은 이방법은 아닌걸로.
시도2. sudo로 npm 재설치
sudo npm install -g npm
뭔가 그럴듯 했으나 이 방법도 결국에는 같은 오류를 발생시켰다.
시도3. npm cahce clean
npm cache clean
회사에서 세팅할때 이런 명령은 쳐보지도 않았어서 이방법은 뭔가 아닌것같지만 일단 시도해보았다.
npm ERR! As of npm@5, the npm cache self-heals from corruption issues and data extracted from the cache is guaranteed to be valid. If you want to make sure everything is consistent, use 'npm cache verify' instead. On the other hand, if you're debugging an issue with the installer, you can use `npm install --cache /tmp/empty-cache` to use a temporary cache instead of nuking the actual one.
npm ERR!
npm ERR! If you're sure you want to delete the entire cache, rerun this command with --force.
이런 에러가 났는데 `npm install --cache /tmp/empty-cache` 이런 명령어를 사용해보라길래 일단 사용해본다.
npm install --cache /tmp/empty-cache
npm ERR! code ENOENT
npm ERR! syscall rename
....
결국엔... 처음과 같은 오류다... npm에 이상이 있는건 분명하다.
근데 아까 --force를 붙여보라는 말도 있었는데 시도해본다
npm cache clean --force
npm WARN using --force I sure hope you know what you are doing.
워닝은 떳지만 에러는 안떳다. 다시 npm i를 해본다.
npm ERR! code ENOENT
npm ERR! syscall rename
npm ERR! path
.....
아직도 안된다.. 도대체 왜안되는거란 말인가!
시도4. node 버전 변경
회사에서 OS환경에 따라서 노드버전을 다른 버전을 썻던것으로 기억했다... 그래서 회사에서 사용하는 버전으로 노드 버전을 바꿔보았다.
회사에서는 노드버전 조금 옛날버전을 사용하는데 10버전과 12버전을 사용한다.
그래서 두개의 버전으로 nvm을 통해 노드버전을 재설정하고 다시 npm i해봤지만 역시나 같은 오류가 발생한다.
시도5. node_modules 제거, package-lock.json 제거후 다시 실행
딱히 기대는 하지 않았다.
검색을 해보니 이런 방법도 검색이 되길래 혹시나해서 시도해 보았다.
근데 역시나 안된다...
시도6. WSL에서 npm i 명령
window 환경이 아니라 Linux 환경이기때문에 WSL을 사용하고 있다.
문득 든 생각이 관리자 권한에서 명령을 실행하면 어떨까 하는 생각이 들었지만 Bash를 관리자 권한으로 실행하기전에 WSL에서 먼저 해보았다.
cine@혹시몰라서:~/개인정보보호...$ npm i
npm WARN deprecated @types/moment-timezone@0.5.30: This is a stub types definition. moment-timezone provides its own type definitions, so you do not need this installed.
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated uuid@3.3.2: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
> bufferutil@4.0.6 install /home/cine/개인정보호보.../bufferutil
> node-gyp-build
> utf-8-validate@5.0.9 install /home/cine/개인정보호보.../utf-8-validate
> node-gyp-build
> sharp@0.30.4 install /home/cine/개인정보호보.../sharp
> (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)
sharp: Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.12.2/libvips-8.12.2-linux-x64.tar.br
sharp: Integrity check passed for linux-x64
> es5-ext@0.10.61 postinstall /home/cine/개인정보호보.../es5-ext
> node -e "try{require('./_postinstall')}catch(e){}" || exit 0
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN requestretry@6.0.0 requires a peer of request@2.*.* but none is installed. You must install peer dependencies yourself.
npm WARN request-promise-native@1.0.9 requires a peer of request@^2.34 but none is installed. You must install peer dependencies yourself.
npm WARN request-promise-core@1.1.4 requires a peer of request@^2.34 but none is installed. You must install peer dependencies yourself.
npm WARN @이름@버전 No repository field.
added 303 packages from 408 contributors in 27.123s
14 packages are looking for funding
run `npm fund` for details
오... 된다... 실제 VSCODE에서도 설치가 잘 되었다! 대박,, 근데 관리자 권한이 아닐때도 됐어야 하는데 왜 안된거였지...
+ 시도7. WSL1을 WSL2로 업그레이드
WSL을 2버전으로 올리니까 WSL자체에서 npm i를 하지 않아도 아주 잘 되었다!!