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

글로벌 노드 모듈을 설치하는 데 문제가 있으며 온라인에서 찾은 모든 것은 해결이 -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



답변

다음 $(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.


답변

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

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

npm config set prefix /usr/local

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

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

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


답변

내 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


답변

제 경우에는 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


답변

내가없는 지금 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. 다음 줄을 귀하의 ~/.bash_profile

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

    bash -l
    


답변

Windows 사용자의 경우

경로에 다음을 추가하십시오. “% AppData % \ npm”