[NPM] ENOENT: no such file or directory

sujin·2024년 8월 11일
0
post-thumbnail

사건의 발단


회사에서 사용하던 라이브러리에 에러가 발생해서 업데이트를 하려던 중 해당 라이브러리 버전업 하려면 node.js 버전도 업그레이드 해야한다는 것을 알게됐고 node.js 버전 업그레이드 하려는 과정에서 뭔가 잘못된 것 같다.


발생한 오류 및 해결 방법


ENOENT: no such file or directory, open '/Users/sujin/package.json’

프로젝트를 실행하기 위해 npm run dev 를 실행했을 때 발생한 오류이다. 해당 디렉토리에 package.json이 없다는 뜻이다.
node.js 버전 업그레이드하는 과정에서 npm cache를 정리하면서 뭔가 잘못된 것 같다. 구글링한 결과 오류에 대한 해결 방법은 다음과 같다.

  1. 프로젝트의 node_modules 폴더 삭제

  2. 캐시 삭제
    2-1. npm cache clean --force

    • npm cache를 모조리 삭제하는 명령어
    • 이거 실행했더니 using --force Recommended protections disabled. 이러면서 사용할 수 없다길래 sudo npm cache clean —force 를 해줬는데도 실패했다.

    2-2. npm cache verify

    • cache에서 꼬인 부분을 체크 및 해결하는 명령어
    • 다음으로 시도한 방법인데 이게 좀더 안전한 방법이라고 해서 실행했는데 성공했다.
  3. npm install

  4. 다시 npm run dev 실행!

해당 오류가 사라지고 서버가 정상적으로 빌드되고 실행되길래 해결됐나 했지만? 페이지 접속하자마자 마주친 또다른 오류를 마주쳤다.

Error: Cannot find module 'next/constants’

해당 모듈을 찾을 수 없다는 에러를 만났다. 나는 분명히 npm install해서 설치를 해줬는데 뭐가 없다는거지? 라는 생각이 들어서 다시 열심히 구글링을 해본 결과 node_modules와 함께 package-lock.json도 지워줘야 한다는 사실을 알게됐다!

다시 node_modules 지우고, package-lock.json도 지우고 npm install 해주니 모두 정상적으로 돌아왔다.


원인


npm 캐싱 문제?

해당 오류에 대해서 찾아본 결과 node.js 버전 업그레이드하는 과정에서 파일 시스템 경로가 캐싱된 정보와 실제 파일 시스템 구조 사이에 불일치가 생겨서 발생한 문제로 예상된다.

업그레이드 진행을 할 때 캐시나 빌드된 파일을 정리하지 않고 업그레이드를 진행하면 문제가 생길 수 있다고 한다. 생각해보니 npm 캐시 정리도 안하고 냅다 버전 업그레이드 명령어를 실행한것 같다.😅

📚 참고자료

https://stackoverflow.com/questions/45531633/npm-warn-enoent-enoent-no-such-file-or-directory-open-c-users-nuwanst-packag

https://icerabbit.tistory.com/78

profile
개발댕발

0개의 댓글