我正在使用NVM构建需要特定(不同) node 版本的库.

When I do:
nvm use 12
I get:

现在使用 node v12.21.0(NPM v8.14.0)

But when I do:
nvm use 14
I get:

现在使用 node v14.18.1(NPM v6.14.15)

我非常惊讶地看到olderNPM版本和newer node 版本.事情就应该是这样的吗?

当我做nvm use 14的时候,我希望它使用最新的Node 14.x,以及该Node版本可用的任何最新的NPM版本.还是我误解了这是怎么回事?

推荐答案

Js是随npm版本一起分发的,但npm仍然是一个可以升级的独立包.

可以从node release info个版本中检索分布式版本

node      npm
v12.22.12 6.14.16
v14.20.0  6.14.17
v16.17.0  8.15.0
v18.9.0   8.19.1

npm检测到旧版本时,它会提示你升级,你也会在野外遇到这个指令:

npm install -g npm

这将获取最新版本的npm,很可能是在nvm 12环境中发生的情况.

有时,对于已经使用以前的主要版本和一些行为变化进行设置的项目来说,迁移到新的主要版本npm可能会带来麻烦.CI任务通常有npm install -g npm分,有一天它们开始因为似乎没有变化而陷入困境.我还看到NPM放弃了对 node 的旧版本的支持,因此npm install -g npm最终导致NPM崩溃.

如果您想保留一个固定的主要版本,如Node 12发布时使用的V6,请使用:

npm install -g npm@^6

或使用特定版本

npm install -g npm@6.14.16

Node.js相关问答推荐

monorepo内的NPM包使用不在注册表中的本地包

Firebase-admin筛选器.或只考虑第一个WHERE子句

TS 后端开发:prismagenerate找不到已安装的@tsed/prisma包

为什么即使数据库确实更新了,此 POST 也无法解析并返回 200 代码?

$not 的聚合版本是什么?

在对象数组中的数组中嵌套 $lookup - Mongodb

Typescript 条件语句不过滤值?

为什么当我try req.logout() 时出现此错误?

如何使用来自前一阶段的另一个数组的聚合mongoose 在数组中添加字段

我可以向NPM添加调试脚本吗?

用于排除多个文件的 node.js glob 模式

运行摩卡+伊斯坦布尔+通天塔

Passport 登录和持久会话

如何在 NodeJs 中下载和解压缩内存中的 zip 文件?

Node.js 应用程序有周期性的缓慢和/或超时(不接受传入的请求)

npm install 给出警告,npm audit fix 不起作用

需要 node-gyp 的 npm install 在 Windows 上失败

续集findbyid不是一个函数,但显然findAll是

在 Node.js 中写入 CSV

node.js 找不到模块mongodb