【发布时间】:2016-08-11 01:26:54
【问题描述】:
我想更新 npm,但我好像有 2 个版本,我不确定如何最好地解决它,所以我只有一个。
我现在的主要问题是我在/Users/me/.npm-packages/lib/node_modules/ 中有一些较旧的 yeoman 生成器,
但较新的已经进入
/Users/me/.npm-global/lib/node_modules/
当我运行yo 时,它只会找到较旧的生成器。
我希望将所有全局安装的软件包集中在一个用户名下的一个地方,并且我不想需要 sudo 一些我不需要的东西。
似乎我在/Users/me/.npm-packages/bin/npm 有节点,也许还有/usr/local/bin/npm。我已经访问了两个目录并更新了 npm,但它仍然返回 2.11.2 而不是它声称已安装的 3.8.6。这是我尝试修复的一些 CLI:
➜ ~ which npm
/Users/me/.npm-packages/bin/npm
➜ ~ sudo which npm
/Users/me/.npm-packages/bin/npm
➜ ~ npm install npm@latest
npm@3.8.6 node_modules/npm
➜ ~ npm -v
2.11.2
➜ ~ npm install -g npm@latest
npm ERR! Darwin 15.3.0
npm ERR! argv "/usr/local/bin/node" "/Users/me/.npm-packages/bin/npm" "install" "-g" "npm@latest"
npm ERR! node v5.10.1
npm ERR! npm v2.11.2
npm ERR! path /usr/local/lib/node_modules/npm
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall rmdir
..etc
➜ ~ sudo npm install -g npm@latest
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@3.8.6 /usr/local/lib/node_modules/npm
➜ ~ npm -v
2.11.2
我还尝试安装 nvm 并在其中安装最新版本的 npm,如 here 所述
我的.zshrc 已将 PATH 变量设置为:
NPM_PACKAGES=/Users/me/.npm-packages
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
PATH="$NPM_PACKAGES/bin:$PATH"
想要使用当前节点并标准化我的包所在的位置,并且可以将所有内容都吹走以使其正常工作。希望这对于比我了解更多的人来说很容易诊断。
【问题讨论】:
-
您会觉得使用全局安装更舒服吗?您需要同时安装这两个版本吗?
-
我从没想过要安装 2 个全局版本。主要是我想确保它归我所有,而不是 root.. 或任何必要的东西,所以我不需要
sudo来做全球性的事情。 -
我知道您可能正在使用全局安装的版本。但是,全局包寄存器(
NPM_PACKAGES变量)位于您的用户中。问题是无法使用它和sudo npm i -g npm@latest。然后重新启用本地NPM_PACKAGES变量。 -
@pandres95 我对条款有点模糊。全球 npm .. 这是否意味着由 root 拥有?我想只有当我 -g 时我才想要 1 个 npm,而且我 认为 归我所有是有意义的。
-
我有 2 个目录,其中包含我在全球范围内安装的东西。它在某个时候切换,我想当我修复需要 sudo 来安装东西时..