当我遇到麻烦时,我试图通过phonegap
升级npm
。简而言之,我的计算机上有两个node_modules
目录。
/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules
当我运行npm upgrade -g phonegap
时,npm
似乎更新了/usr/local/lib/node_modules
中包的副本。但是,如果我which phonegap
我发现符号链接指向/usr/local/share/npm/lib/node_modules
处的旧安装。
此外,当我尝试安装独立程序包(例如express
)时,文件安装在/usr/local/lib/node_modules
目录中,但是在我的任何位置都没有创建可执行文件的符号链接$PATH
。击>
两个问题:
npm
安装软件时将$PATH
配置为链接可执行文件?奖励积分:安装node
的方法会影响配置吗?有lot of options。
编辑:我发现我的/usr/local/bin
创建了符号链接,但我的.bash_profile
在/usr/local/share/npm/bin
之前设置了/usr/local/bin
在我的$PATH
。我依旧记得在某些时候将这条路径添加到我的个人资料中,但我不确定原因。
现在问题变成了:我如何在我的计算机上找到两个不同的node_modules
目录?为什么我要将node_modules
放在share/npm/lib
子目录中而不是右边在/usr/local/lib
?
答案 0 :(得分:83)
/usr/local/lib/node_modules
是全局安装的节点模块的正确目录。
/usr/local/share/npm/lib/node_modules
对我毫无意义。这里的一个问题是您感到困惑,因为有两个名为 node_modules 的目录:
/usr/local/lib/node_modules
/usr/local/lib/node_modules/npm/node_modules
后者似乎是Node附带的节点模块,例如lodash
,前者是我使用npm
安装的Node模块。
答案 1 :(得分:41)
第二个Thomas David Kehoe,有以下警告 -
如果您使用的是节点版本管理器(nvm),则您的全局节点模块将存储在您保存模块时使用的任何节点版本下。
所以~/.nvm/versions/node/{version}/lib/node_modules/
。
答案 2 :(得分:5)
npm root -g
检查npm_modules的全局位置
答案 3 :(得分:1)
查找当前活动的 npm
安装的当前路径:
npm root -g
或尝试以下流行的默认设置之一:
Linux:
/usr/local/lib/node_modules
MacOS(通过 brew 安装):
/opt/homebrew/lib/node_modules
与 nvm 一起安装的 Linux(也可能是 macos):
~/.nvm/versions/node/{version}/lib/node_modules/
Windows(奖励 ?)
C:\Program Files\nodejs\node_modules\
答案 4 :(得分:0)
如果您想知道NPM软件包的位置,则应该:
which npm // locate a program file in the user's path SEE man which
// OUTPUT SAMPLE
/usr/local/bin/npm
la /usr/local/bin/npm // la: aliased to ls -lAh SEE which la THEN man ls
lrwxr-xr-x 1 t04435 admin 46B 18 Sep 10:37 /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
因此,鉴于npm本身是一个NODE软件包,它与其他软件包( EUREKA )安装在同一位置。因此,请确认您应该CD进入node_modules并列出目录。
cd /usr/local/lib/node_modules/
ls
#SAMPLE OUTPUT
@angular npm .... all global npm packages installed
npm -root -g
根据@anthonygore的评论
答案 5 :(得分:-3)