全局节点模块无法正确安装。没有找到指令

时间:2013-02-24 17:26:43

标签: node.js terminal install npm

我在安装全局节点模块时遇到问题,我在网上找到的所有内容都说解决方法只是添加-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环境才能下载到正确的文件夹?是不是正确连接的东西?我迷路了..

谢谢!

其他规格:

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

10 个答案:

答案 0 :(得分:98)

这可能意味着您的节点安装前缀不是您所期望的。

您可以这样设置:

npm config set prefix /usr/local

然后再次尝试运行npm install -g,它应该可以解决。在Mac上为我工作,解决方案来自这个网站:

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

编辑:请注意,我刚刚在我正在设置的新Mac上遇到过此问题,并且还必须执行detailed here on stackoverflow过程。

答案 1 :(得分:49)

/usr/local/share/npm/bin添加到PATH(例如,.bashrc)。

有关详细信息,请参阅npm help npm

  

全球模式:   npm将软件包安装到前缀/ lib / node_modules的安装前缀中,并且bin安装在前缀/ bin中。

您可以使用npm get prefixnpm config list | grep prefix找到安装前缀。

答案 2 :(得分:4)

我没有永远通过sudo安装任何npm的东西!我有自己的理由,但我只是试着保持简单,基于用户,因为这是一个用户开发世界,并不是每个人都有root访问权限,而root / sudo安装这样的东西似乎只是让事情开始变得混乱用。毕竟,所有开发人员都应该能够遵循这些说明,而不仅仅是特权sudo用户。

此特定系统是通过SSH访问的RHEL7:

通常需要各种版本的节点,因此我使用NVM https://github.com/creationix/nvm

因此,我可以向您展示-g全局安装的工作示例,使用NVM,NPM和不使用root的节点路径。

如果不是.npm-packages,请设置前缀。{p> (注意,那是一个连字符,而不是下划线)

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

如果您更喜欢readup on why and which here,请调整〜/ .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 

这几乎涵盖了所有路径。例如,如果您像npm install -g gulp那样安装gulp,那么~/.npm-packages/bin中的符号链接(注意这是一个连字符,而不是下划线)。 (无需gulp-cligulp-cl

您几乎可以替换/注释掉所有其他节点路径导出。您可以将此路径信息安全地放在您已有的任何其他路径信息之下,而不会覆盖这些信息。

答案 3 :(得分:2)

我的npm也找不到全局软件包。我按照布拉德·帕克斯的建议做了:

npm config set prefix /usr/local

然后我遇到了EACCES权限错误(不要使用sudo npm install -g),并通过官方的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

答案 4 :(得分:0)

我遇到的问题是缺少二进制文件,因为我的主目录中特定于用户的 .npmrc 文件设置了 bin-links false,尽管default is true

如果这是您的问题,请检查所有.npmrc文件均未将其设置为false。

然后重新安装所有模块将在prefix处创建二进制文件,以便您的PATH可以看到它们。

答案 5 :(得分:0)

在我的情况下,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

答案 6 :(得分:0)

  1. 将以下行添加到您的~/.bash_profile

    export PATH="$HOME/.npm/bin:$PATH"
    
  2. 加载bash配置文件

    bash -l
    

答案 7 :(得分:0)

对于Windows用户

将此添加到您的路径:“%AppData%\ npm”

答案 8 :(得分: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

答案 9 :(得分:-8)

步骤

首先,删除节点:

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

其次,创建.bash_rc:

 vi ~/.bash_rc

复制以下项目并粘贴到文件中,在步骤2中打开:

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

运行Jitsu。运行vi~ / .bash_profile,这是你应该看到的:

 [[ -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
 # }}}

我找到了从本文中删除Node的答案: JITSU FAILED TO INSTALL OSX [node 0.8.17 and NPM 1.2.0] WTF