全局节点模块没有正确安装。 找不到命令

我有一个安装全局节点模块的问题,我在网上find的所有东西都说只是加了-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 

但是,当我运行直接链接位置来expression它的作品:

  $ /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/binPATH (例如,在.bashrc )。

欲了解更多信息,请参阅npm help npm

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

你可以用npm get prefixnpm config list | grep prefixfind安装前缀 npm config list | grep prefix

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

你可以这样设置:

npm config set prefix /usr/local

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

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

编辑:请注意,我只是遇到了一个新的Mac我设置了,并不得不在这里详细的stackoverflow的过程。

我不会通过sudo安装任何npm的东西! 我有我自己的理由,但我只是试图保持简单和基于用户的,因为这是一个用户开发的世界,并不是每个人都有root权限,root / sudo安装这样的东西似乎混乱起来的东西开始用。 毕竟,所有的开发者都应该能够遵循这些指示,而不仅仅是特权的sudo用户。

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

经常需要不同版本的节点,所以我使用NVM https://github.com/creationix/nvm

所以说,我可以向你展示一个-g全局安装的工作示例,使用NVM,NPM和不使用root的节点path。

如果还没有设置.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 

这几乎涵盖了所有的path。 例如,如果你像这样npm install -g gulp ~/.npm-packages/bin npm install -g gulp符号链接~/.npm-packages/bin (注意是一个连字符而不是下划线)。 (不需要gulp-cli gulp-cl

您几乎可以replace/注释掉所有其他节点path导出。 你可以把这个path信息放在你已经拥有的任何其他path信息的下面,没有它覆盖那些东西。

脚步

首先,删除节点:

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

其次,创build.bash_rc:

  vi ~/.bash_rc 

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

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

运行柔道。 运行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 # }}} 

我find了从本文中删除节点的答案: JITSU无法安装OSX [节点0.8.17和NPM 1.2.0]跆拳道