Mam problem z instalacją modułów węzłów globalnych i wszystko, co znajduję w Internecie, mówi, że rozwiązaniem jest po prostu dodanie -g. To nie jest problem. Uważam, że jest to problem z łączeniem lub nieprawidłowym katalogiem.
Oto co robię:
$ 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
Jednak kiedy uruchamiam bezpośrednią lokalizację linku, aby to wyrazić, działa:
$ /usr/local/share/npm/bin/express myapp
create : myapp
create : myapp/package.json
create : myapp/app.js
... Builds app correctly
Where the module is:
$ 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
In my .bash_profile I have:
export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node
Do I need to change my Node environment to download to correct folder? Is something not linking correctly? I am lost..
Thanks!
Other Specs:
$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2
node.js
terminal
installation
npm
im_benton
źródło
źródło
express
.bin
path, which I set in .bash_profile, is:export PATH=$PATH:/usr/local/Cellar/node/10.5.0/bin
Odpowiedzi:
Add
$(npm get prefix)/bin
to yourPATH
(e.g., in.bashrc
), like so:echo "export PATH=$PATH:$(npm get prefix)/bin" >> ~/.bashrc
For more info, see
npm help npm
:You can find the install prefix with
npm get prefix
ornpm config list | grep prefix
.źródło
$HOME/.npm
to the .bash_profile or .bashrc? I use nvm, so want to make sure im not cross tying things on this.PATH
will be/usr/local/Cellar/node/VERSION_NUMBER/bin/
.This may mean your node install prefix isn't what you expect.
You can set it like so:
npm config set prefix /usr/local
then try running
npm install -g
again, and it should work out. Worked for me on a mac, and the solution comes from this site:http://webbb.be/blog/command-not-found-node-npm/
EDIT: Note that I just came across this again on a new Mac I'm setting up, and had to do the process detailed here on stackoverflow as well.
źródło
nodenv
and there is most likely a better way to solve this issue for my case. However, your solution worked as a quick and dirty fix! I then switched the prefix back to thenodenv
prefix and I was able to run the package from the/usr/local path
. Thanks!/Users/(username)/.npm-global
even though I did a fresh install of everything. I'm also on a MacMy npm couldn't find global packages as well. I did what Brad Parks suggested:
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-globallymkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
źródło
export PATH=~/.npm-global/bin:$PATH
line is in the ~/.profile file. You get any error?In my case, The NODE_PATH environment variable was empty. Check whether it is empty-
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
źródło
I do not ever install any npm stuff, via sudo! I have my own reasons, but I just try to keep things simple, and user based, since this is a user development world, and not everyone has root access, and root/sudo installing things like this just seems to clutter up things to begin with. After all, all developers should be able to follow these instructions, not just privileged sudo users.
This particular system is a RHEL7 accessed via SSH:
Frequently one needs various versions of node, so I use NVM https://github.com/creationix/nvm
So with that said, I can show you a working example for
-g
global installs, using NVM, NPM, and node paths not using root.set your prefix for
.npm-packages
if it isn't already. (note, thats a hyphen, not an underscore)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 forgulp-cli
, orgulp-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.
źródło
Add the following line to your
~/.bash_profile
export PATH="$HOME/.npm/bin:$PATH"
Load bash profile
źródło
For Windows users
Add this to your path: "%AppData%\npm"
źródło
The problem I had was missing the binaries because the user specific .npmrc file in my home directory had
bin-links
set tofalse
, though thedefault 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 yourPATH
can see them.źródło
Check your global Node module's binary folder, and add it to your $PATH.
npm list -g | head -1
If you use nodenv, the path will change whenever you install the global node version. Adding the path like this solves my problem.
"$HOME/.nodenv/versions/$(nodenv global)/bin"
Shortcut for adding the path to zsh
$ echo 'export PATH="$HOME/.nodenv/versions/$(nodenv global)/bin"' >> ~/.zshrc
źródło