Nodejs가 Windows에서 설치된 모듈을 찾을 수 없습니다


240

현재 Windows에서 nodejs를 배우고 있습니다. npm.cmd를 사용하여 여러 모듈이 전체적으로 설치되었으며 nodejs가 설치된 모듈을 찾지 못했습니다. 비취를 예로 들어 보자.

npm install jade -g

Jade는 directory에 설치되어 "C:\Program Files (x86)\nodejs\node_modules"있지만 다음 코드는 오류와 함께 실패 "Cannot find module 'jade'"합니다.

var jade = require('jade');

그러나 jade가 로컬에 설치되면 코드가 성공적으로 실행됩니다 (npm에 -g 옵션없이). 로컬로 설치된 모듈을 사용하고 싶지 않습니다. 디스크 공간이 낭비됩니다. 전체적으로 설치된 모듈을 Windows에서 작동하게하려면 어떻게해야합니까?



3
@ AmolMKulkarni : 그것이 어떻게 관련되어 있는지 잘 모르겠습니다. 요구 사항에 '.js'를 추가해도 Windows의 문제는 해결되지 않습니다.
Dan Dascalescu

1
@ DanDascalescu : 나는 당신이 대답을 오해했다고 생각합니다. 이 답변에 제공된 코드는 Node.js 코드이며 필요한 패키지를 찾는 방법을 보여줍니다. 따라서 파일의 위치와 방법을 이해하면 문제를보다 쉽게 ​​해결할 수 있습니다.
Amol M Kulkarni 2019


stackoverflow.com/questions/5817874/ 에 따르면 npm install forever -g
Sharif Yazdian

답변:


349

라는 환경 변수를 추가 NODE_PATH하고로 설정 %USERPROFILE%\Application Data\npm\node_modules(윈도우 XP), %AppData%\npm\node_modules윈도우 맛에 모듈을 설치까지 (윈도우 7/8/10), 또는 어디든지 NPM 끝. 한 번만 수행하려면 시스템 속성 대화 상자의 고급 탭에서 시스템 변수로이 변수를 추가하십시오 (실행 control.exe sysdm.cpl,System,3).

Windows 7+의 빠른 솔루션은 다음을 실행하는 것입니다.

rem for future
setx NODE_PATH %AppData%\npm\node_modules
rem for current session
set NODE_PATH=%AppData%\npm\node_modules

언급에의 가치 NODE_PATH노드 응용 프로그램에 모듈을 가져올 때에만 사용됩니다. CLI에서 전체적으로 설치된 모듈의 이진 파일을 사용하려면 모듈에 추가 PATH하지 않아도됩니다 node_modules(예 %AppData%\npm: Windows 7/8/10).


오래된 이야기

나는 node.js에 익숙하지 않아서 완전히 옳을 수는 없지만 내 경험으로는 다음과 같이 작동합니다.

  1. -g 는 전역 라이브러리를 설치하는 방법이 아니라 시스템 경로에 배치하는 방법 일 뿐이므로 전체 경로를 작성하지 않고도 명령 줄에서 호출 할 수 있습니다. 예를 들어, 노드 앱이 로컬 파일을 적게 변환하는 것이 유용 합니다. 전역으로 설치하면 모든 디렉토리에서 사용할 수 있습니다.
  2. node.js 자체는 npm 전역 디렉토리를 보지 않고 다른 알고리즘을 사용하여 필요한 파일을 찾습니다. http://nodejs.org/api/modules.html#modules_file_modules (기본적으로 경로의 모든 폴더를 스캔하여 시작 현재 node_modules 폴더에서 확인하십시오).

자세한 내용은 비슷한 질문을 참조하십시오 : npm을 사용하여 모듈을 전체적으로 설치하려면 어떻게합니까?


17
감사합니다. 제공 한 링크가 매우 유용합니다. 모듈 검색 알고리즘이 약간 복잡해 보이지만 훨씬 명확 해졌습니다. 마지막으로 환경 변수 NODE_PATH를 사용하여 전역 모듈 경로를 참조하고 set NODE_PATH=C:\Documents and Settings\DevUser\Application Data\npm\node_modules예상대로 작동합니다. 전역 적으로 설치된 모듈이 Windows의 '% USERPROFILE % \ Application Data \ npm \ node_modules'에 위치하는 것은 이상하지만, NODE_PATH에는 따옴표가 없습니다.
Cosmore

2
기쁘다. FS와 같은 표준 node.js 모듈에 대한 NODE_PATH 변경 경로를 변경하지 않았습니까?
Alexey Ivanov

2
심지어 C:\Program Files\nodejs\node_modules\npm\node_modules방금 설치 한 모듈이없는 이유가 궁금 npm install -g express했습니다.C:\Documents and Settings\swapnil\Application Data\npm\node_modules
Swapnil Mhaske

1
Windows 8에서 경로는%USERPROFILE%\AppData\Roaming\npm\node_modules
Yar

9
글로벌 node_modules 디렉토리의 위치를 ​​찾으려면 명령을 실행하십시오 npm list -g. 첫 번째 출력 행은 전역 node_modules 디렉토리의 상위입니다. 즉, global node_modules 디렉토리는 {output}\node_modules입니다. 또한 실행할 때 설치 디렉토리를 출력합니다npm install --global {xyz}
cowlinator

34

windows7 플랫폼에 있다면 다음과 같이 NODE_PATH를 변경해야합니다. %AppData%\npm\node_modules


7
그것은 Windows 8 에서 appdata \ roaming 에 있습니다
JonnyRaa

6
npm 2.5.1이있는 Windows 8.1에 있으며 NODE_PATH가 문서화 된대로 설정되어 있지만 여전히 설치된 패키지를 찾을 수 없습니다. 생각?
JaKXz

5
Windows 10에서는 % AppData % \ npm
이어야합니다.

제 경우에는 (W10) % AppData % \ Roaming \ npm
Hinrich

32

좀비를 깨울 수 있다는 것을 알고 있지만 이것이 여전히 문제라고 생각합니다 .Windows 7에서 노드 모듈에 대한 전역 액세스가 필요하면 이것을 전역 변수 경로에 추가해야합니다.

C:\Users\{USER}\AppData\Roaming\npm

중요 : node_modules부분 이없는 이것만이 30 분이 걸렸습니다.


4
또는 Windows 8 사용자의 경우 % USERPROFILE % \ AppData \ Roaming \ npm
Benson

4
node_modules부품 제거에 대한 조언에 감사드립니다 .
danguilherme

20

Windows 10에서 작동하게하려면 폴더 %USERPROFILE%\AppData\Roaming\npm를 PATH 에 추가하여 해결했습니다 . \node_modules이와 같이 덧붙여서 : %USERPROFILE%\AppData\Roaming\npm\node_modules\나를 위해 작동하지 않았다.


7
또는 간단히 말하면`% AppData % \ npm`
Dan Diplo

이게 이상해! 나는이 문제를 문자 그대로 이틀 동안 사냥 해 왔습니다. 이것은 내가 시도한 가장 모호한 솔루션이며 가장 먼저 시도한 솔루션입니다. 정말 고맙습니다.
Will

예, path환경 변수에 추가하면 창 10에서 직접 실행할 수 있습니다.
Zhu Xiaohu

1
"단지 추가 ..."와 같은 말 대신 실제로 예제로 이것을 수행하는 방법을 보여줄 것입니다.
Gabe Hiemstra

14

이 노드의 블로그 게시물 에서 인용하겠습니다 ...

일반적으로 경험 법칙은 다음과 같습니다.

  • 프로그램에서 사용하려는 것을 require ( 'whatever')를 사용하여 설치하는 경우 프로젝트의 루트에 로컬로 설치하십시오.
  • 쉘, 명령 행 또는 기타에서 사용하려는 것을 설치하는 경우, 바이너리가 PATH 환경 변수로 끝나도록 전역으로 설치하십시오.

...

물론 두 가지 모두를 원하는 경우가 있습니다. Coffee-script와 Express는 모두 명령 줄 인터페이스와 라이브러리가있는 앱의 좋은 예입니다. 이러한 경우 다음 중 하나를 수행 할 수 있습니다.

  1. 두 곳에 설치하십시오. 정말 디스크 공간이 부족합니까? 정말 괜찮습니다. 그들은 작은 JavaScript 프로그램입니다.
  2. 전역으로 설치 한 다음 npm link coffee-script 또는 npm link express (심볼릭 링크를 지원하는 플랫폼에있는 경우)를 연결 한 다음 모든 심볼릭 링크를 업데이트하려면 전역 복사본 만 업데이트하면됩니다.

10
They’re tiny JavaScript programs.이 라이브러리 중 일부는 확실히 작지 않습니다!
UpTheCreek

1
@UpTheCreek 디스크 공간 범위에서 크기를 언급하고 있다고 확신합니다. 텍스트 파일입니다. 그들은 객관적으로 작습니다.
Phillip Copley

12

간단히 말하면 npm link jade앱 디렉토리에서 사용 하십시오.


4
npm link jadeWindows에서 작동하지 않는 것 같습니다 . npm은 다음과 같은 오류 메시지를 반환합니다.npm ERR! Error: npm link not supported on windows
Cosmore

1
이제 v0.8.9 버전
Gianfranco P.

@beyonddoor : npm link관리자 명령 창에서 실행해야합니다 .
Mr.

12

환경 변수를 추가 / 편집하려고 시도했으며 다음과 같이 결론을 내 렸습니다.

  1. User variables(하단) 대신 System variables( 상단) 편집 / 추가 ; 그렇지 않으면 작동하려면 "관리자로 실행"해야합니다.
  2. 추가] ;%AppData%\npmPath위해 명령 줄 도구로 사용하기에 (만약 같은 지원 jshintgrunt-cli).
  3. 프로젝트 디렉토리에 스크립트를 설치하지 않고 스크립트 에서 작성 NODE_PATH하고 설정하십시오 . (하지만 Vista 이상 과 같은 OS에서 작업하는 경우이 요구 사항 이 권장 됩니다 .)%AppData%\npm\node_modulesrequire('<pkg_name>')npm linkmklink

테스트 환경 :

  • 승리 7 (Ent., 64 비트, SP1), Node.js 4.2.4, npm 2.14.12
  • 승리 8.1 (Ent., 64-bit), Node.js 0.10.30, npm 1.4.21

9

글로벌 모듈을 작동시키는 데 끔찍한 시간이있었습니다. 결국 C:\Users\yourusername\AppData\Roaming\npm시스템 변수 아래의 PATH 변수에 명시 적으로 추가 했습니다. 또한이 변수가 목록의 nodejs 경로 변수 앞에 와야했습니다.

Windows 10을 실행하고 있습니다.


이것이 나를 위해 일한 유일한 것입니다. 윈도우 8에서 실행
찰리 조각가

1
이것은 나를 위해 일한 유일한 것입니다, 감사합니다!
devqon

6

Windows 7 에서이 문제가 발생했습니다.

npm install -g gulp

일반 사용자로 로그온 한 상태에서 관리자로

솔루션 : 일반 사용자와 동일한 설치 (cmd의 "admin으로 실행"이 아님)를 실행할 때 문제가 없습니다. 기본 설치 및 검색 경로와 관련이 있다고 생각합니다.


1
이 점을 좀 더 명확히하기 위해 ... 노드가 관리자로 설치되면 시스템 경로를 업데이트하여 관리자 전역 노드 모듈 폴더에 대한 참조를 포함시킵니다. 새 사용자가 전체적으로 무언가를 설치하면 다른 노드 모듈 폴더에 설치됩니다. Node를 설치 한 사용자 이외의 각 사용자는 글로벌 노드 모듈 폴더를 포함하도록 경로를 업데이트해야합니다. 동일한 계정에 노드를 설치하고 사용하는 경우에는 필요하지 않습니다.
dpsthree

nodejs v6.9.4가 설치된 Windows 8.1 pro, 경로 실행 설정 : C : \ Program Files \ nodejs \ nodevars.bat
Robot70

4

win8.1 npm을 사용한 경험으로 모듈은 설치 C:\Users\[UserName]\AppData\Roaming\npm\node_modules 되지만 덤프는 검색합니다 C:\Users\[UserName]\node_modules.

전체 경로별로 응용 프로그램에서 하나의 간단한 솔루션 참조 모듈 :

var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");

4

Windows의 경우 모두 nodejs 및 npm 모듈에 환경 변수를 설정해야한다고 말했지만 그 이유를 알고 있습니까? 일부 모듈의 경우 명령 줄 도구가 있으며 모듈을 설치 한 후 C : \ Program Files \ nodejs에 [module] .cmd 파일이 있으며 창 명령에서 실행하는 데 사용됩니다. 따라서 cmd 파일을 포함하는 경로를 환경 변수 % PATH %에 추가하지 않으면 명령 창을 통해 성공적으로 시작되지 않습니다.


2

같은 문제가 발생하여 bower를 설치하려고했습니다. npm install -g bower

나는 이것이 아닌 다른 사용자가 노드를 설치 했기 때문이라고 생각합니다 .

노드를 제거한 다음 다시 설치했습니다. 설치하는 동안 PATH에 추가> npm 모듈 옵션에 대한이 텍스트를 보았습니다 .

노드 설치 메시지

여기에 이미지 설명을 입력하십시오

노드 설치 후 npm install -g bower다시 실행 했습니다. 그리고 지금 정자 작동합니다.

나처럼 자신의 사용자로 노드를 다시 설치할 필요는 없습니다. 다른 사용자가 설명했듯이 솔루션은 NODE_PATH 또는 PATH 변수 를 통해 이루어져야 합니다 .

이것은 다른 사용자가 노드를 설치했거나 설치 중에 PATH에 추가> npm 모듈 옵션 이 표시되지 않은 경우에만이 문제가 발생한다는 것을 나타냅니다.


2

나를 위해 Windows 10에서 일했습니다. npm config set prefix %AppData%\npm\node_modules


1

또는 ~/.npmrc올바른 prefix에 추가 할 수 있습니다 . 나는 C:\Program Files\nodejs64 Win7을 위해있다.


1

Windows 10이 설치된 새 컴퓨터에서 visual studio 2015와 함께 node.js를 사용하고 싶기 때문에이 질문에 걸려 넘어졌습니다. Windows 7 및 8 및 8.1에서는 node.js를 사용했습니다. 직렬 및 RFXCOM 모듈로 인해이 버전을 사용해야하므로 레거시 node.js 0.10.39를 사용합니다.

Windows 10의 대답은 C : \ Users \ User \ node_modules를 사용하여 환경 변수에 NODE_PATH를 설정하는 것입니다.


1
어, 아니 에서 (여기에 윈도우 10 ..) 나는 일부 모듈을 볼 C:\Users\User\node_modules 에 좀 모듈을보고 C:\Users\User\AppData\Roaming\npm\node_modules 난에서 일부 모듈 참조 C:\Users\User\node_modules 에있는 또한 C:\Program Files (x86)\nodejs\node_modules\npm\node_modules 확실하지 이런 방법을. 어느 것이 무엇이고 왜 그렇게 했습니까?
zipzit

1

Windows 10의 경우 폴더에 gulp를 로컬로 설치해야했습니다.

C : \ Users \ myaccount \ AppData \ Roaming \ npm \ node_modules

npm install gulp

이로 인해 "gulp is not aware"문제가 해결되었습니다.


0

그냥 다운로드에서 노드 재 설치 이 모든 경로 문제를 해결합니다.

명령 프롬프트 나 터미널을 다시 시작하는 것을 잊지 마십시오.


0

위의 모든 답변이 저에게 효과적이지 않았습니다. 결국 일을 유일한 것은 %의 AppData % \ NPM에 환경 경로 변수를 추가하는 것이 었습니다, 그리고 C에서 두 겨 파일을 삭제합니다 : \ 프로그램 파일 \ nodejs.

ng 패키지는 C : \ Program Files \ nodejs \ node_modules에 설치되지 않았으므로 nodejs 디렉토리에서 ng 바이너리를 사용하면 작동하지 않는 것이 분명했습니다.

C : \ Users \ MyUser에서 PATH 환경 변수-.npmrc-시스템 변수 및 / 또는 NODE_PATH를 추가하려고 이미 구성했기 때문에 왜이 디렉토리에서 검색했는지 확실하지 않습니다.


-4

Windows를 사용하는 경우 몇 가지 단계가 필요합니다. 1) package.json이라는 파일을 만듭니다.

 {
  "name": "hello"
, "version": "0.0.1"
, "dependencies": {
    "express": "*"
  }
}

여기서 hello는 패키지 이름이고 *는 최신 버전의 종속성을 의미합니다.

2) 프로젝트 디렉토리를 코드화하고 다음 명령을 실행하십시오.

npm 설치

의존성을 설치합니다


4
이것은 전 세계적으로 설치되지 않습니다 (질문이 묻습니다). 이것은 응용 프로그램에 의존성을 가져옵니다
bryanmac

위에 나열된 모든 것을 시도하여 node.js 설치를 설득하여 전 세계적으로 설치된 모듈을 인식하도록 시도했지만 그중 아무것도 작동하지 않습니다. node (v8.11.3 LTS)를 제거하고 다시 설치 한 후에도 node.js 스크립트에서 require ( "mongodb") 명령을 실행할 때마다 SAME 오류 : "모듈 mongodb를 찾을 수 없습니다"가 표시됩니다. 그러나 "npm ll -g mongodb"명령을 실행하면 NPM이 모듈이 설치되었음을 알려줍니다. 누군가이 문제와 함께 작동한다는 확인을 나에게 줄 수 있습니까?
David Edwards

업데이트 : Saulius는 실제로 작동하는 해결 방법을 제공했습니다. 즉 JavaScript require 문에서 모듈의 전체 경로를 지정하십시오. 그러나 설치된 모듈의 잘못된 폴더에서 node.js 검색에 대한 그의 언급이 정확하다면 누군가 node.js 개발자에게 경고 할 수 있습니까? v8.11.3 LTS에는 여전히 영향을 미치기 때문에 문제가 발생합니다.
David Edwards
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.