我在安装全局节点模块时遇到问题,我在网上找到的所有内容都说解决方法只是添加-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
答案 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 prefix
或npm 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-cli
或gulp-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
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
source ~/.profile
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)
将以下行添加到您的~/.bash_profile
export PATH="$HOME/.npm/bin:$PATH"
加载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