node.js - npm 在 npm update 上自行卸载

标签 node.js npm

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

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

我试图通过更新 npm

npm update -g npm

但这会出现错误
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

所以我尝试了
sudo npm update -g npm

但是在这个命令运行之后,我的 zsh shell 找不到 npm。当我键入任何 npm 命令时,它只会返回未找到的命令。我不得不重新安装 Node 。什么可能导致这种情况?是否出于我不知道的原因在后台卸载 npm 或更改其 PATH?

最佳答案

这是一个久经考验的 Node.js 安装技术,之后你的 npm 更新
命令将运行正常

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

注意 - 这会安装 Node.js,它为您提供 node 和 npm,
他们每次发布都会聚集在一起。

重新开始删除先前的 Node 和 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

下载来源:https://nodejs.org/en/download/
cd node-v13.6.0

将环境变量 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

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

验证其安装OK就发出
node --version

v13.6.0



当您使用语法时:
npm install -g some_cool_module

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

现在把上面三个 export xxx=yyy
命令到你的 ~/.bashrc 或一些类似的东西来持久化这些环境变量的变化

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

关于node.js - npm 在 npm update 上自行卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139323/

相关文章:

javascript - nodejs看不到已安装的mysql模块

javascript - node_modules 包如何读取项目根目录下的配置文件?

javascript - node.js - 结合 2 个 Promise

javascript - 防止 node_modules 包更新的最佳方法

javascript - 程序失败,因为readFile是异步的?

javascript - ts-node 找不到依赖模块

javascript - 运行 npm 全局安装包

node.js - 以编程方式使用 Node js 构建脚本中的 npm

node.js - n 或 nvm 用于管理 Node 版本 - 为每个版本保留全局模块是个好主意吗?

javascript - 使用 twilio Passthrough API 向多个号码发送消息