目录
1,前言
有的 npm 依赖会对 Node.js 的版本有要求,主要的原因有几点:
- 使用了新特性,npm 包使用了新版 Node.js 引入的新 API 或 JavaScript 的新语法。
- 安全性,Node.js 的新版本会修复安全漏洞。
- 依赖管理,npm 包依赖的其他包,而这些包又依赖特定版本的 Node.js。
有的 npm 依赖对 Node.js 版本无要求,所以也无需关心。比如 vue
和 loadsh-es
。
2,问题
当下载 npm 依赖时,默认会下载稳定的最高版本,但本地的 Node.js 版本可能会不兼容。
实际开发中,使用的 Node.js 版本大多受公司流水线的限制,不一定能使用到高版本。
比如本地的 Node.js 是 v16.20.2 版本,但下载的 query-string
是 "query-string": "^9.1.0"
,
bash
npm i query-string
此时控制台会报警告信息,提示需要的 Node.js 的最低版本:
问题 :那怎么知道 query-string
的哪个版本会兼容本地的 Node.js 版本呢?
3,解决
bash
npm view <package-name> engines
运行该命令后,
- 没有任何输出,说明此 npm 依赖和 Node.js 无关;
- 输出
{ node: '*' }
,说明对 Node.js 版本无要求。
- 输出需要的 Node.js 版本。
可以通过指定 npm 依赖的大版本号,查看所有小版本需要的 Node.js 版本。
所以,Node.jsv16 可选择 query-string@8
使用。
4,其他
在 package-lock.json
中也可以查看 npm 依赖需要的最低 Node.js 版本和需要的其他依赖。
- vue 对 Node.js 无关。
async-foreach
对 Node.js 版本无要求:
Vite
对 Node.js 版本有要求:
以上。