答案1
经过几年的良好运行,我想我可以自信地说没有真正的问题(至少,我没有遇到过)。唯一的问题是开始n
工作。为此,请阅读下文。
使用 npm n 解决
我以具有 sudo 访问权限的用户身份安装它,并且我不想使用sudo
npm 或 node 来让它工作(为什么?)。
安装 npm:
sudo apt install npm
。设置 npm 的前缀:
npm config set prefix ~/.npm
将 npm 升级到最新版本
npm i -g npm
。
(更新:apt 的 npm 现在太旧了,您在尝试更新时应该会收到错误消息,因为捆绑的节点版本太旧了。在这种情况下,请在所有这些说明结束时再次运行此命令)
- 在文件中设置环境变量
~/.profile
(这些更改仅在您注销并再次登录后或运行时才会生效source ~/.profile
):
# vars to avoid ever using sudo for npm
export PATH="$PATH:$HOME/.npm/bin"
# these are for n and where it'll install nodejs:
export N_PREFIX=$HOME/.n
export PATH="$PATH:$N_PREFIX/bin"
您可能还想将这些行添加到~/.bash_profile
,~/.bash_login
或者每次打开新终端时~/.bashrc
都需要source ~/.profile
识别 npm、node 和 n。看到这个由于这个原因。
运行以更新环境变量。这样,bash 将在本次会话期间
source ~/.profile
找到路径(即无需注销然后再次登录)。npm
n
使用 npm
n
包升级节点(参见:https://askubuntu.com/a/663052/808646):
# Intructions: https://www.npmjs.com/package/n
# Some people also suggest npm cache clean -f, but (I think) this isn't necessary here.
# I'm using lts for the stable release, for the latest use instead: n latest
npm install -g n
n lts
- 卸载以前由 npm 安装的 nodejs:
sudo apt-get purge nodejs
。
解释:这一步至关重要。到目前为止,发生了以下情况:您安装了npm
,但实际上在其上安装了旧的nodejs
和旧的。尽管您据称使用 来“安装”了新的,但前一个优先,并且无法真正安装它下载的新版本,因此您必须先删除旧的。 但是,如果您在不安装新的 的情况下删除它,那么您将不再拥有任何版本,因为卸载旧的也会卸载旧的(我认为……或者如果您再次导出所有变量,它可以工作吗?也许仅使用nodejs/npm 版本进行安装就足够了?)。因此,您必须安装一个新的(您在步骤 3 中执行了此操作)和一个新的使用(您在步骤 6 中执行了此操作)npm
nodejs
n
nodejs
n
nodejs
npm
npm
nodejs
npm
n
npm
nodejs
n
前卸载旧的nodejs
。您还需要新安装的原因nodejs
是,如果没有新的nodejs
,新的npm
将无法运行,它需要当前nodejs
安装。
- 检查它是否有效。如果没有,请尝试注销并再次登录,或输入
n
并选择正确的 nodejs 版本(*默认情况下,它将使用与该 nodejs 版本捆绑在一起的 npm,但有一些选项可以防止这种情况):node -v
答案2
运行sudo apt install npm
正常,但sudo apt-get --purge remove nodejs
也会删除npm
,让你回到开始的地方。因此,我认为除了使用非 apt 方法来安装 的最新版本外,没有其他方法nodejs
。