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%\npm를 Path위해 명령 줄 도구로 사용하기에 (만약 같은 지원 jshint과 grunt-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.