Node.js 停止维护时间表:Node 20 已 EOL,以及 2026 年 10 月安全更新
Node.js 各版本线及其停止维护日期,2026 年 10 月 21 日安全更新修复了什么,以及怎么找出所有还在运行旧版 Node 的地方。
2026年10月22日
SiteXray

Node.js 20 已于 2026 年 4 月 30 日停止维护。 半年后的 2026 年 10 月 21 日,Node.js 官方为 26.x、24.x 和 22.x 发布安全更新,修复了 10 个漏洞,其中 4 个为高危。Node 20 没有补丁,以后也不会有。
Node.js 停止维护日期
偶数版本会进入长期支持(LTS),总共维护大约 30 个月;奇数版本生命周期很短。
| 版本 | 状态(2026 年 10 月) | 停止维护 |
|---|---|---|
| Node.js 26 | Current,2026 年 10 月起进入 Active LTS | 2029 年 4 月 30 日 |
| Node.js 24 | Active / Maintenance LTS | 2028 年 4 月 30 日 |
| Node.js 22 | Maintenance LTS | 2027 年 4 月 30 日 |
| Node.js 20 | 已停止维护 | 2026 年 4 月 30 日 |
| Node.js 18 | 已停止维护 | 2025 年 4 月 30 日 |
| Node.js 16 及更早 | 已停止维护 |
规划升级前,请在 nodejs.org/en/about/previous-releases 查看最新的时间表。
2026 年 10 月 21 日的更新修复了什么
- CVE-2026-111497:Brotli 解码器越界写入。 官方公告称可导致远程代码执行。任何会解压攻击者可控 Brotli 数据的服务(抓取不可信 URL 的 HTTP 客户端、代理、上传接口)都受影响。
- TLS 主机名校验绕过。 多个问题可能让错误主机的证书被接受,削弱了服务器对其他服务发起的 HTTPS 调用的安全性。
- DNS 查询相关问题,以及 c-ares、OpenSSL(22.x 和 24.x)、SQLite(22.x)和 Undici 的依赖更新。
据报道,本次的修复版本是 26.12.1、24.22.1 和 22.23.4。锁定版本之前,请对照官方公告确认。
旧版 Node 藏在哪里
你电脑上的 node -v,很少就是线上真正在跑的那个版本。每次安全更新之后,逐一检查这些地方:
- Docker 镜像。 Dockerfile 里的
FROM node:20-alpine会一直打包 Node 20,直到有人改它。即使大版本不变也要重新构建镜像,因为node:22-alpine这类标签只有在重新拉取并构建时才会用上修复。 - 平台的运行时设置。 Vercel、Netlify、Render、Railway、AWS Lambda 等平台每个项目都有 Node 版本设置。有些会自动升级小版本,但很少会主动把你从停止维护的大版本迁走。
engines字段和.nvmrc/.node-version文件,它们会把 CI 和部署锁在旧的大版本上。- 进程管理器和系统包。 PM2、systemd 服务,以及多年前用安装包装进
/usr/local/bin/node的版本。 - 跑在另一台服务器上的后台任务,平时没人记得,直到它出问题。
Node.js 不会通过 HTTP 暴露版本号,所以外部扫描无法直接看出版本。网站漏洞扫描器会标记 X-Powered-By: Express 这类框架指纹,这些本来也应该去掉。
从 Node 20 升级
- 至少升到 Node 22,最好是 24,后者支持到 2028 年。
- 更新原生模块(
bcrypt、sharp、better-sqlite3等),因为它们是针对特定 Node ABI 编译的。 - 先在 CI 里用新版本跑测试,再切生产环境;大多数应用从 20 升到 22 或 24 都不需要改代码。
- 在同一个 PR 里同时更新 Dockerfile 基础镜像、平台设置和
engines,避免三者不一致。 - 部署后在进程内确认实际运行的版本(启动时打印
process.version)。
如果你有很多小服务,最后一步最重要:上次出问题的,往往就是三处只改了两处的那个项目。如果你希望有人代劳,托管运维会在 72 小时内应用 Node.js 安全更新。