developer tip

글로벌 노드 모듈이 올바르게 설치되지 않습니다.

copycodes 2020. 11. 26. 18:44
반응형

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


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

에 추가 /usr/local/share/npm/bin하십시오 PATH(예 :) .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에서 다시 이것을 발견했으며 여기에 스택 오버플에 대한 자세한 프로세스를 수행해야했습니다 .


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

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

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

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

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

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

Then adjust your ~/.bash_profile or .bashrc if you prefer readup on why and which here, with the following information.

#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 

That pretty much covers all paths. For e.g., if you install gulp like this npm install -g gulp it symlinks in ~/.npm-packages/bin (note thats a hyphen, not an underscore). (no need for gulp-cli, or gulp-cl)

You can pretty much replace/comment-out all other node path exports. You can put this path info below any other path info you already have, safely, without it overwriting that stuff.


In my case, The NODE_PATH environment variable was empty. Check whether it is empty-

echo $NODE_PATH

if the NODE_PATH is empty. Then change ~/.bash_profile and add NODE_PATH

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

Now install npm modules again and check whether that is being installed on the path npm root -g


My npm couldn't find global packages as well. I did what Brad Parks suggested:

npm config set prefix /usr/local

Then I got a EACCES permissions error (DON'T USE sudo npm install -g <package>) and fixed it through the official npm docs: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

  1. On the command line, in your home directory, create a directory for global installations:
 mkdir ~/.npm-global
  1. Configure npm to use the new directory path:
 npm config set prefix '~/.npm-global'
  1. In your preferred text editor, open or create a ~/.profile file and add this line:
 export PATH=~/.npm-global/bin:$PATH
  1. On the command line, update your system variables:
 source ~/.profile
  1. Then install a package globally and test it! For example:
npm install -g awsmobile-cli
awsmobile configure


  1. Add the following line to your ~/.bash_profile

    export PATH="$HOME/.npm/bin:$PATH"
    
  2. Load bash profile

    bash -l
    

The problem I had was missing the binaries because the user specific .npmrc file in my home directory had bin-links set to false, though the default is true.

Just in case this is your problem check that none of your .npmrc files have it set to false.

Then re-installing all modules will create the binaries at the prefix so your PATH can see them.


Steps

First, remove Node:

 sudo rm -rf /usr/local/lib/node_modules/jitsu
 npm cache clear
 sudo npm install jitsu -g

Second, create .bash_rc:

 vi ~/.bash_rc

Copy following items and paste into the file, opened in step 2:

 [[ -s  ~/.bashrc ]] && source ~/.bashrc
 export PATH=/usr/local/share/npm/bin:$PATH

Run Jitsu. Run vi ~/.bash_profile, this is what you should see:

 [[ -s  ~/.bashrc ]] && source ~/.bashrc
 export PATH=/usr/local/share/npm/bin:$PATH

 # {{{
 # Node Completion - Auto-generated, do not touch.
 shopt -s progcomp
 for f in $(command ls ~/.node-completion); do
   f="$HOME/.node-completion/$f"
   test -f "$f" && . "$f"
 done
 # }}}

I found the answer for removing Node from this article: JITSU FAILED TO INSTALL OSX [node 0.8.17 and NPM 1.2.0] WTF

참고URL : https://stackoverflow.com/questions/15054388/global-node-modules-not-installing-correctly-command-not-found

반응형