更新节点版本

Updating node version

我已经按照以下步骤更新了 Node js:

sudo npm install -g n
sudo n stable
sudo n latest

但是当我检查版本时:

node -v

nodejs -v

我得到的 old/current 版本是 v10.19.0

知道为什么会这样吗?

考虑使用 nvm 并指定您要使用的版本:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
nvm install 13.10.1

如果您想编辑全局节点,可以尝试清除缓存 versionsudo npm cache clean -f

所以我想出了如何升级到最新版本的node js。首先,您需要使用以下语法删除旧版本的节点:

sudo apt-get purge --auto-remove nodejs

安装 npm 使用:

sudo apt install npm

对我来说,它已经安装了最新版本的 node js,但是如果它对您不起作用,请继续使用以下语法安装 node:

npm install n -g
n stable
sudo n latest

然后通过运行node -v

检查你的节点版本

Node.js v10.19.0 难题


"I am going to answer this question in reference to Ubuntu, because I know about the apt package maintainer, and I feel that even if you don't use Ubuntu as your distro, so long as your a Linux user, you have still used apt/apt-get."

本题演示了NVM在Linux等平台上安装Node的方法。

NVM 使安装节点变得非常容易。不久之前,每个人都不得不使用 curl/wget & npm...

老实说,我不记得所有的步骤,但对于一种非常流行的开源语言来说,它似乎非常复杂,并且从此以后在所有平台上大量使用; NVM 应运而生,并迅速流行起来。


NVM

的问题

NVM 的问题与使它如此有用的问题相同 — “说清楚我真的很喜欢节点版本管理器” — NVM 使用环境变量,并且本地安装文件夹到 isntall 节点,并配置环境以使用 NVM 和 NODE 命令。问题是你已经有了 apt 包维护者的版本。 _Apt 软件 总是落后于最新发布的版本,几乎所有我们可以讨论的与 apt 有关的软件都是如此。您的 Debian Linux“开箱即用”安装附带了最新的 apt 版本的节点,即 (在撰写此答案时):

Node.js v(10.19.00)

...并且它被安装,并分配给系统根二进制目录中的路径变量@...

/usr/bin



如果您遇到此问题,您应该做几件事来收集一些信息。首先,转到您的控制台,然后输入命令 which node.

以下片段显示了您要键入的命令,可帮助您解决问题:
# First type the command like this:

~$> which node


# Then do it like this:

~$> which -a node

您的输出应该看起来像这样:

!IMPORTANT!: 也可以使用命令 node --versionnode -v 这样你就知道你的 shell 认为你当前的版本是什么。了解您的 shell 在做什么很重要。

第一个which命令显示当您使用命令~$> node时正在使用的节点安装,第二个which -a命令显示您拥有的所有可执行节点程序整个系统。你会看到多个,这就是为什么当你尝试使用 npm 或其他带有 nod 版本的软件时,当你使用命令时使用

您接下来要做的是键入以下命令

~$> nvm which current


大多数东西都应该指向位于您的路径上的节点安装,路径名看起来接近于这样的东西:

/home/<your-user-name>/.nvm/versions/node/<current-node-version>

问题是如果你尝试做一些事情,比如用 npm 安装 vsce VSCode 的扩展包,它不会安装,即使 node 似乎工作正常。

所以你要做的就是删除你拥有的其他版本的节点,你可能在执行上面的命令时看到了。目前/usr/bin/nodejs是node,也就是我们说的node版本是:`node v10.19.00.



删除不需要的节点包并修复 NPN:

The last thing we will do before removing the unwanted nodejs package is doctor up npm. Use the two commands below, but just read what the output says. It will likely show unpleasant errors, and may not work at all, but just type them in, so we can use them in a bit to fix npm w/ the new node.js version, and you can see the difference. This will help demonstrate, under the hood, everything your doing, and how it is affecting the software on your machine.


好的,继续执行吧:

~$> npm doctor

然后使用

~$> sudo npm doctor


现在我们将删除不需要的包:"Node v10.19.00"

首先,让我们看看您的包裹。

为此,请使用以下命令查看您的包裹。查看并确认nodejs在列表中

~$> dpkg --list

然后使用..

sudo apt-get --purge remove nodejs; sudo apt-get autoremove;

# OR alternatively you could do it in two commands:

sudo apt --purge remove nodejs
sudo apt --purge autoremove

现在使用...

~$> dpkg --list
...确认nodejs确实没了



去掉不需要的节点包,让运行再次执行以下操作:

你可能会再次得到不愉快的结果,但没关系,你应该注意到 npm doctor 的行为有所变化。
~$> npm doctor

然后使用

~$> sudo npm doctor

---
输出大概是这样的:



现在您需要复制 Node.js 的 NVM 版本(目前我正在使用 Node v17.1.0 但是当您阅读本文时,您可能会使用另一个版本。


要将 _NVM Node.js 可执行文件 复制到正确的目录,您必须执行以下操作:
  1. 再次使用 nvm which current 命令,如果你还记得的话,它会打印一个 Node executable 的名称,如下所示:

/home/<your-user-name>/.nvm/versions/node/<current-node-version>

  1. 复制并粘贴登录到控制台的 <NODE-PATHNAME> 节点可执行文件。

  2. 执行以下命令:

~$> sudo copy -v <NODE-PATHNAME> /usr/bin


现在,如果您没有以下目录,请创建它们:


~$> mkdir ~/node_modules
~$> mkdir ~/node_modules/.bin

!NOTE:

Now upgrade npm. Unlike Node, we won't use an installed package from NPM, and copy it to the places where we want it. We will just makesure both locations have the same npm version
Just FYI, NPM is having the same issue as node.js, but you may have figured that out already.

使用以下命令:

第一个 npm install 将如片段中所示执行

~$> nvm install-latest-npm



第二个 npm install(正下方的那个)需要稍微调整一下,在 npm@ 之后你必须用最新版本的 npm 替换 latest

~$> npm install -g npm@latest

现在最后你需要使用 npm doctor 来确保一切正常:

~$> npm doctor
~$> sudo npm doctor

您应该得到如下所示的结果: