[Node.js] npm ERR! path ~~\AppData\Roaming\npm

Sieun Dorothy Lee·2023년 12월 4일
0

에러와 해결방법

npm, npx을 사용하다 아래의 에러를 만나게 된다면,

npm ERR! code ENOENT
npm ERR! syscall lstat
npm ERR! path `$localName$`\AppData\Roaming\npm
npm ERR! errno -4058

(해당 경로에 npm이 없다는 말! 글로벌로 설치된 npm이 없어서 생기는 일)

$ npm install npm -g 를 터미널에 쳐보자.

명령어를 실행하면, $localName$\AppData\Roaming에 npm 이 생성되는 것을 확인할 수 있다.

에러 해결 완료.

참고) https://velog.io/@jhcha/typescript-npm-ERR-path-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0

위의 방법으로 해결하면 경로가 꼬이는 듯 하다.

그냥 Appdata/Roaming 경로에 npm 디렉터리를 추가하기만 하면 npx가 정상적으로 실행되는 것을 확인할 수 있었다.


npm & npx

npm과 npx 모두 node.js의 명령어이다.
그렇다면 어떤 차이가 있을까?

npm (=package manager)

node.js의 자동화된 의존성과 패키지 관리를 위한 패키지 매니저이다.
(패키지 매니저 : 리눅스 우분투의 apt-get, 파이썬의 pip 등)
패키지 매니저는 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴이며,
라이브러리가 코드의 작성을 위해 사용되는 코드의 묶음이라면, 패키지는 코드의 배포를 위해 사용되는 코드의 묶음

많은 패키지들은 다른 패키지들이 설치되어야만 제대로 동작하는데, 이를 의존성이라고 한다.
따라서, 패키지를 사용하고자 할 때, 의존성을 갖는 다른 패키지들을 전부 설치 및 업데이트해줘야하는데, 이를 한번에 처리해주는 것이 패키지 매니저이다.
(package.json 파일에 의존성에 대한 정보가 저장되어 있고, npm install 을 하면 이를 바탕으로 패키지가 설치되며, npm install (새로운 패키지) 를 하면 package.json 파일이 자동으로 업데이트됨)

+) npm을 프로젝트 폴더 안에서 사용하면, 해당 폴더에서만 패키지가 사용가능하며 프로젝트마다 npm install을 해줘야한다.
그러나, $ npm install 모듈이름 -g 형식으로 -g 옵션을 붙이면 내 컴퓨터 안의 글로벌한 공간에 모듈을 설치해 프로젝트마다 같은 모듈을 공유해서 사용할 수 있다.

npx (=package runner)

npx는 npm 버전 5.2.0부터 사용 가능하게 된 기능으로 '패키지를 실행'하는 역할이다.
npx도 모듈의 일종인데, npx는 npm을 통해 모듈을 로컬에 설치해야만 실행시킬 수 있었던 기존 문제점의 해결책이 되었다.
모듈을 로컬에 저장하지 않고, 매번 최신 버전의 파일만을 임시로 불러와 실행시킨 후에, 다시 그 파일은 없어지는 방식으로 모듈이 돌아간다.
(업데이트가 잦은 create-react-app과 같은 모듈에 대해서 항상 최신 버전을 유지해줘서 유용함)
또한, 특정 버전의 node.js를 사용하여 js 파일을 실행시킬 수도 있다

npx node@12 index.js
  • npx 사용하는 상황
    - npm run-script를 사용하지 않고 로컬에 설치된 패키지를 사용할 경우
    • 일회성 명령으로 패키지를 실행할 경우
    • gist-base scripts를 실행할 경우
    • 특정 노드 버전의 스크립트를 실행할 경우
      (https://webruden.tistory.com/275 여기서 확인)

참고)
https://javascript.plainenglish.io/yes-its-npx-not-npm-the-difference-explained-58cbb202ec33
https://lakelouise.tistory.com/204
https://webruden.tistory.com/275

profile
성장하는 중!

0개의 댓글