글로벌 노드 모듈이 올바르게 설치되지 않습니다. 명령어를 찾을수 없음


82

글로벌 노드 모듈을 설치하는 데 문제가 있으며 온라인에서 찾은 모든 것은 해결이 -g를 추가하는 것이라고 말합니다. 문제가 아닙니다. 링크 문제 또는 잘못된 디렉토리 문제라고 생각합니다.

내가하는 일은 다음과 같습니다.

$ npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
...downloads correctly

$ express myapp
bash: express: command not found

그러나 직접 링크 위치를 실행하면 작동합니다.

   $ /usr/local/share/npm/bin/express myapp

   create : myapp
   create : myapp/package.json
   create : myapp/app.js
... Builds app correctly

모듈 위치 :

$ which node
/usr/local/bin/node
$ node -pe process.execPath
/usr/local/Cellar/node/0.8.20/bin/node
$ npm link express
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express

내 .bash_profile에는 다음이 있습니다.

export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node

올바른 폴더로 다운로드하려면 노드 환경을 변경해야합니까? 제대로 연결되지 않은 것이 있습니까? 길을 잃었다 ..

감사!

기타 사양 :

$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2

1
/ usr / local / share / npm / bin /이 쉘의 $ PATH에 없기 때문입니다. 이것이 쉘이 express.
JP Richardson

2
나는 추가했다 : export PATH = / usr / local / share / npm / bin : $ PATH to my .bash_profile and it work. 감사! 내가 수락하고 찬성 할 수 있도록 답변을 추가하세요.
im_benton 2013

제 경우에도 OSX에서 Cellar를 통해 NPM을 설치 한 경우 bin.bash_profile에 설정 한 경로는 다음과 같습니다.export PATH=$PATH:/usr/local/Cellar/node/10.5.0/bin
Shane

답변:


63

다음 $(npm get prefix)/bin과 같이 PATH(예 :)에 추가하십시오 .bashrc.

echo "export PATH=$PATH:$(npm get prefix)/bin" >> ~/.bashrc

자세한 내용은 npm help npm다음을 참조하십시오 .

전역 모드 : npm은 prefix / lib / node_modules의 install 접두사에 패키지를 설치하고 bin은 prefix / bin에 설치됩니다.

npm get prefix또는로 설치 접두사를 찾을 수 있습니다 npm config list | grep prefix.


nvm을 사용하는 비 sudo의 경우 경로가 $HOME/.npm.bash_profile 또는 .bashrc 가 아니어야 합니까? 나는 nvm을 사용하므로 이것에 대해 교차하지 않도록하고 싶습니다.
blamb

OSX, 당신은이에 추가 할 필요가 bin 폴더의 위치에 브루을 통해 노드와 NPM을 설치 한 사람들을위한 PATH것입니다 /usr/local/Cellar/node/VERSION_NUMBER/bin/.
Jon Betts

135

이는 노드 설치 접두사가 예상 한 것과 다를 수 있음을 의미 할 수 있습니다.

다음과 같이 설정할 수 있습니다.

npm config set prefix /usr/local

그런 다음 다시 실행을 시도 npm install -g하십시오. Mac에서 나를 위해 일했으며 솔루션은 다음 사이트에서 제공됩니다.

http://webbb.be/blog/command-not-found-node-npm/

편집 : 설정중인 새 Mac에서이 문제를 다시 발견했으며 여기에 스택 오버플에 대한 자세한 프로세스를 수행해야했습니다 .


나는 사용 nodenv하고 있으며 내 경우 에이 문제를 해결하는 더 좋은 방법이 있습니다. 그러나 귀하의 솔루션은 빠르고 더러운 수정으로 작동했습니다! 그런 다음 접두사를 접두사로 다시 전환 nodenv하고 /usr/local path. 감사!
Garrett Tacoronte

3
나는 이것을 고치기 위해 몇 달을 보냈고 이것이 나를 위해 그것을 고친 유일한 대답입니다! 정말 감사합니다.
azz0r

여전히 나를 위해 작동하지 않습니다. 어떡해? win7에 전역 적으로 typescript를 설치하고 싶습니다.
Artimal

1
나는 많은 해결책을 시도했지만 이것 만이 나를 위해 해냈다. 어떤 이유로 /Users/(username)/.npm-global모든 것을 새로 설치했지만 접두사가로 설정되었습니다 . 난 맥에도 해요
Castilho

Cellar를 통해 Node를 설치 한 경우이 문제가 발생합니다.
Shane 19

12

내 npm은 글로벌 패키지도 찾을 수 없습니다. 나는 Brad Parks가 제안한대로했습니다.

npm config set prefix /usr/local

그런 다음 EACCES 권한 오류 (DO N'T USE sudo npm install -g <package>) 가 발생 하고 공식 npm 문서를 통해 수정했습니다 : https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

  1. 명령 줄의 홈 디렉터리에서 전역 설치를위한 디렉터리를 만듭니다.
 mkdir ~/.npm-global
  1. 새 디렉터리 경로를 사용하도록 npm을 구성합니다.
 npm config set prefix '~/.npm-global'
  1. 선호하는 텍스트 편집기에서 ~ / .profile 파일을 열거 나 만들고 다음 줄을 추가합니다.
 export PATH=~/.npm-global/bin:$PATH
  1. 명령 줄에서 시스템 변수를 업데이트합니다.
 source ~/.profile
  1. 그런 다음 패키지를 전역으로 설치하고 테스트하십시오! 예를 들면 :
npm install -g awsmobile-cli
awsmobile configure


안녕하세요 여러분, 질문이 있습니다. 2 단계 후 ~ / .npm-global 에서 bin / 을 찾지 못했습니다 . 그래서, 작동하지 않습니까?
AquariusPotter

여전히 작동합니다. export PATH=~/.npm-global/bin:$PATH줄이 ~ / .profile 파일 에 있음을 잊지 마십시오 . 오류가 있습니까?
비센테

6

제 경우에는 NODE_PATH 환경 변수가 비어있었습니다. 비어 있는지 확인

echo $NODE_PATH

NODE_PATH가 비어있는 경우. 그런 다음 ~ / .bash_profile을 변경하고 NODE_PATH를 추가하십시오.

nano ~/.bash_profile
export NODE_PATH=`npm root -g`
source ~/.bash_profile

이제 npm 모듈을 다시 설치하고 경로에 설치되고 있는지 확인하십시오. npm root -g


이! 내 문제는 NVM를 사용하고 REPL 년대 필요한 때에 글로벌 패키지를 찾을 것입니다 리눅스 / 페도라
레이 포스

4

내가없는 지금 sudo를 통해, 어떤 NPM 물건을 설치! 나는 나만의 이유가 있지만, 단순하고 사용자 기반을 유지하려고 노력합니다. 이것은 사용자 개발 세계이고 모든 사람이 루트 액세스 권한을 가지고있는 것은 아니기 때문에 루트 / 수도 설치는 시작할 일을 혼란스럽게하는 것 같습니다. 와. 결국 모든 개발자는 권한있는 sudo 사용자뿐만 아니라 이러한 지침을 따를 수 있어야합니다.

이 특정 시스템은 SSH를 통해 액세스되는 RHEL7입니다.

종종 다양한 버전의 노드가 필요하므로 NVM https://github.com/creationix/nvm을 사용합니다.

따라서 -g루트를 사용하지 않는 NVM, NPM 및 노드 경로를 사용하여 전역 설치에 대한 작업 예제를 보여 드릴 수 있습니다 .

.npm-packages아직없는 경우 접두사를 설정하십시오 . (참고, 밑줄이 아닌 하이픈)

nvm config ls
prefix = "/home/<yourusername>/.npm-packages"

그런 다음 ~ / .bash_profile 또는 .bashrc를 조정하여 다음 정보를 사용하여 이유와 내용을 읽으십시오 .

#PATH EXPORTS
NODE_MODULES=$HOME/.npm                                          
NPM_PACKAGES=$HOME/.npm-packages/bin                           
export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES         

#NVM ENABLE                                                 
export NVM_DIR="$HOME/.nvm"                                   
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 

그것은 거의 모든 경로를 포함합니다. 예를 들어 gulp를 이와 같이 설치 npm install -g gulp하면 심볼릭 링크가 표시됩니다 ~/.npm-packages/bin(밑줄이 아니라 하이픈 임). ( gulp-cli또는은 필요 없음 gulp-cl)

다른 모든 노드 경로 내보내기를 거의 대체 / 주석 처리 할 수 ​​있습니다. 이 경로 정보를 이미 가지고있는 다른 경로 정보 아래에 안전하게 덮어 쓰지 않고 넣을 수 있습니다.


1
  1. 다음 줄을 귀하의 ~/.bash_profile

    export PATH="$HOME/.npm/bin:$PATH"
    
  2. Bash 프로필로드

    bash -l
    


0

내가 가진 문제는 한 바이너리 누락 사용자 고유의 때문에 .npmrc의 홈 디렉토리에있는 파일이 한 bin-links설정 false불구하고 default is true.

이것이 문제인 경우를 대비하여 .npmrc 파일이 false로 설정되지 않았는지 확인하십시오.

그런 다음 다시 설치하는 모든 모듈은에서 바이너리를 생성합니다 prefix당신 때문에 PATH볼 수있는 그들.


0

전역 노드 모듈의 바이너리 폴더를 확인하고 $ PATH에 추가합니다.

npm list -g | head -1

nodenv를 사용하는 경우 전역 노드 버전을 설치할 때마다 경로가 변경됩니다. 이와 같은 경로를 추가하면 내 문제가 해결됩니다.

"$HOME/.nodenv/versions/$(nodenv global)/bin"

zsh에 경로를 추가하기위한 바로 가기

$ echo 'export PATH="$HOME/.nodenv/versions/$(nodenv global)/bin"' >> ~/.zshrc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.