npm 在 npm 更新时自行卸载

Cih*_*ğlu 5 node.js npm

我在 stackoverflow 中查找了类似的主题,但找不到,所以就在这里。

我一直在http://learn.mean.io/上查看 MEAN 堆栈文档并检查一些 shell 命令。

我尝试通过更新 npm

npm update -g npm
Run Code Online (Sandbox Code Playgroud)

但这给出了错误

npm ERR! Error: EACCES, unlink '/usr/local/lib/node_modules/npm'
npm ERR!  { [Error: EACCES, unlink '/usr/local/lib/node_modules/npm']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/npm' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 14.0.0
npm ERR! command "node" "/usr/local/bin/npm" "update" "-g" "npm"
npm ERR! cwd /Users/cihankoseoglu
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/lib/node_modules/npm
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/usr/local/lib/node_modules/npm'
npm ERR! error rolling back Error: EACCES, unlink '/usr/local/lib/node_modules/npm'
npm ERR! error rolling back  { [Error: EACCES, unlink '/usr/local/lib/node_modules/npm']
npm ERR! error rolling back   errno: 3,
npm ERR! error rolling back   code: 'EACCES',
npm ERR! error rolling back   path: '/usr/local/lib/node_modules/npm' }
npm ERR! not ok code 0
Run Code Online (Sandbox Code Playgroud)

所以我尝试了

sudo npm update -g npm
Run Code Online (Sandbox Code Playgroud)

但运行此命令后,我的 zsh shell 找不到 npm。当我输入任何 npm 命令时,它只会返回未找到命令。我不得不重新安装节点。可能是什么原因造成的?是因为我不知道的原因而在后台卸载 npm 或更改其 PATH 吗?

Sco*_*and 2

这是一种经过验证的 Node.js 安装技术,之后你的 npm update 命令将正常运行

以下是从源代码 (OSX/linux) 安装 Node.js 的步骤,您可以/应该以自己的身份而不是 root (sudo) 身份发出所有这些命令

注意 - 这会安装 Node.js,它为您提供了 Node 和 npm,它们在每个版本中都在一起。

要重新开始,请删除先前的节点和 npm 安装以及这些:

sudo mv ~/.npmrc ~/.npmrc_ignore
sudo mv ~/.npm   ~/.npm_ignore
sudo mv ~/tmp    ~/tmp_ignore
sudo mv ~/.npm-init.js ~/.npm-init.js_ignore
Run Code Online (Sandbox Code Playgroud)

从以下位置下载源:https: //nodejs.org/en/download/

cd node-v13.6.0
Run Code Online (Sandbox Code Playgroud)

将环境变量 NODE_PATH 定义为后续模块安装的目录

export NODE_PARENT=/some/desired/install/path_goes_here

export NODE_PARENT=/usr/local/bin/nodejs # use this if you want to install as root (sudo)
export NODE_PARENT=${HOME}/node-v13.6.0  # use this if you want to install modules as yourself

export PATH=${NODE_PARENT}/bin:${PATH}
export NODE_PATH=${NODE_PARENT}/lib/node_modules

./configure   --prefix=${NODE_PARENT}

make -j8      #  if you have a quad core use -j8 
make install  #  NOTICE not using sudo so install is owned by normal user
Run Code Online (Sandbox Code Playgroud)

将其放入上面 --prefix 定义的目录中

验证其安装正常只是问题

node --version
Run Code Online (Sandbox Code Playgroud)

v13.6.0

当您使用语法时:

npm install -g some_cool_module
Run Code Online (Sandbox Code Playgroud)

全局的 -g 将其安装到目录 $NODE_PATH 而不是您的 $PWD

现在将以上三个 export xxx=yyy 命令放入 ~/.bashrc 或类似命令中以保留这些环境变量更改

当你想安装一些 npm 包时避免使用 sudo