Node.js v22.18.0(Jod LTS)发布深度解读:Type Stripping 默认开启与核心模块新特性全览

发布时间:2026/9/18 16:57:37

Node.js v22.18.0(Jod LTS)发布深度解读:Type Stripping 默认开启与核心模块新特性全览 Node.js v22.18.0Jod LTS发布深度解读Type Stripping 默认开启与核心模块新特性全览【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org2025 年 7 月 31 日Node.js 官方发布了 22.x 版本线的 LTS 更新 v22.18.0代号 Jod由 Antoine du Hameladuh95负责发布。本文基于 nodejs.org 仓库中对应的发布博客原文全面解读本次版本的 Notable Changes重要变更、模块级修复与改进并结合该仓库的发布脚本与博客数据流水线说明这类发布文章是如何在 nodejs.org 网站仓库中自动生成的。读完本文你将掌握Type Stripping 默认启用的使用方法与关闭方式、import.meta.main与--watch-kill-signal等新 API 的语义以及如何校验官方二进制包的 SHASUMS 签名。一、版本背景一次以 SEMVER-MINOR 为主的 LTS 更新v22.18.0 属于 Node.js 22.xJodLTS 版本线发布日期为 2025-07-31发布格式为## 2025-07-31, Version 22.18.0 Jod (LTS), aduh95本次更新包含 9 项SEMVER-MINOR向后兼容的新功能变更涉及deps、esm、fs、permission、sqlite、url、watch、worker等多个模块同时伴随大量修复与工具链升级。从仓库中的发布记录可以看到这条版本的完整提交列表被整理在 v22.18.0.md 中是了解该版本全貌的一手资料。二、头条特性Type Stripping 默认启用本次发布最重要的变化是Type Stripping类型剥离在默认情况下开启Node.js 无需任何额外配置即可直接执行 TypeScript 文件。官方给出的最小验证示例$ echo const foo: string World; console.log(Hello ${foo}!); file.ts $ node file.ts Hello World!也就是说只需要把.ts文件交给node命令类型注解会被在运行时剥离代码照常执行。该功能由 Marco Ippolito 在 PR #56350 中贡献并且从该版本的提交记录可以还原它的落地过程module: unflag --experimental-strip-types取消该特性的实验性 flagmodule: remove experimental warning from type stripping移除类型剥离的实验性警告deps: update amaro to 1.1.0/1.0.0/0.5.3/0.5.2/0.5.1/0.5.0逐步升级内置的 amaro 转译器module: improve typescript error message format、module: refactor commonjs typescript loader、module: fix typescript import.meta.main。使用前提与限制需要特别注意的是该功能仍处于实验阶段experimental后续可能发生变更。具体支持语法与限制例如不支持需要运行时语义的枚举、命名空间等语法以官方 TypeScript 文档的「Type Stripping」章节typescript.html#type-stripping为准。如果希望关闭该行为可以在命令行显式传入$ node --no-experimental-strip-types file.ts从提交module: unflag --experimental-strip-types可以看出开启状态现在是默认值--no-前缀的 flag 用于回退到旧行为。对团队而言这意味着 CI 与本地开发环境只要升级到该版本即可零成本运行纯类型注解的.ts脚本但涉及复杂 TS 语法如enum、namespace、运行时装饰器等的代码仍建议使用官方tsc编译链路。三、其他值得关注的 SEMVER-MINOR 变更除 Type Stripping 外本次版本还引入了 8 项新能力逐项说明如下。3.1 esmimport.meta.main判断模块是否为入口由 Joe 贡献PR #57804在 ESM 模块中可以通过import.meta.main判断当前模块是否为主入口文件常用于「被直接运行时执行、被导入时不执行」的双重用途脚本if (import.meta.main) { // 仅当直接运行本文件时执行 main(); }3.2 fsfs-events 突发场景的 AsyncIterator 处理由 Philipp Dunkel 贡献PR #58490修复了 fs-events 在高频突发事件下使用 AsyncIterator 遍历时的处理问题使fs.watch等基于事件迭代的场景能更正确地在突发写入时保持数据一致性。3.3 permission权限模型增强本次版本对 Node.js Permission Model权限模型做了两处增强均由 Rafael Gonzaga 贡献spawn 时传播权限模型 flagPR #58853子进程通过child_process启动时权限模型的限制 flag 会正确传播避免子进程绕过父进程的权限约束permission.has(addon)PR #58951为权限模型新增对 addon原生插件的检测能力可以在src,permission层面查询某个 addon 是否被当前权限策略允许。此外还有src,permission: enhance permission model debugPR #58898与src: pass resource on permission checks for spawnPR #58758等配套改动完善了权限检查的调试输出与资源上下文传递。3.4 sqlite连接级readBigInts选项由 Miguel Marcondes Filho 贡献PR #58697在数据库连接级别新增readBigInts选项。启用后从 SQLite 读回的 INTEGER 大整数将以BigInt形式返回避免超出 JavaScriptNumber安全整数范围时丢失精度。3.5 urlfileURLToPathBufferAPI由 James M Snell 贡献PR #58700新增fileURLToPathBufferAPI可将file://形式的 URL 直接转换为Buffer形式的文件路径。相比返回字符串的fileURLToPath它更适合需要零拷贝、直接处理二进制路径的场景。3.6 watch--watch-kill-signalflag由 Dario Piotrowicz 贡献PR #58719--watch模式下新增--watch-kill-signal命令行 flag允许用户自定义重启进程时发送的信号默认通常为SIGTERM例如$ node --watch --watch-kill-signalSIGINT server.js配套提交doc: add all watch-mode related flags to node.1PR #58719把所有 watch 模式相关 flag 补进了node.1手册页并且新增测试test: add tests to ensure that node.1 is kept in sync with cli.mdPR #58878防止手册与 CLI 文档日后脱节。3.7 workerWorker支持异步可释放Async Disposable由 James M Snell 贡献PR #58385Worker现在实现了 Async Disposable 协议可以配合await using使用作用域结束时自动优雅关闭工作线程await using worker new Worker(./worker.js); // worker 在此作用域结束后自动释放配套新增测试test: add test for async disposable worker threadPR #58385验证该行为。四、模块级提交速览修复、依赖与工具链除上述新特性外v22.18.0 还包含大量修复与依赖升级。下面按模块归纳括号内为对应 PR 编号提交原文可在 v22.18.0.md 中检索。依赖升级depsnpm 升级至 10.9.3PR #58847sqlite 升级至 3.50.2PR #58882、3.50.1PR #58630simdjson 升级至 3.13.0PR #58629zlib 升级至 1.3.1-470d3a2PR #58628acorn 升级至 8.15.0PR #58711minimatch 升级至 10.0.3PR #58712googletest 更新至 35b75a2PR #58710amaro 系列升级PR #56350支撑 Type Stripping。核心模块修复crypto修复 OpenSSL 3.4 引入的 SHAKE128/256 破坏性变更PR #58942修复OPENSSL_IS_BORINGSSL宏定义包含问题PR #58845dns修复解析过程中的内存泄漏PR #58973当 timeout 为负时统一设为 1000msPR #58441http修复 keep-alive 在请求体空行之后不超时的问题PR #58178http2新增 diagnostics channel 事件http2.server.stream.closePR #58602os修复GetInterfaceAddresses内存泄漏PR #58940repl修复关闭后抛出ERR_USE_AFTER_CLOSEPR #58791tab 补全不再使用已废弃的require.extensionsPR #58653修复计算字符串属性的 tab 补全PR #58709utilutil.inspect不再因 Error 的 stack 指向自身而崩溃PR #58196v8修复 heap utils destroy 中缺失的回调PR #58846moduleconvertCJSFilenameToURL支持 schema-only 核心模块PR #58612允许 ESM loader 的 CJS 处理中require()循环依赖PR #58598更新混合模块语法错误的测试PR #55874inspector新增协议方法获取已发送/已接收数据PR #58645DOMException支持序列化/反序列化PR #58649。构建与工具链非 64 位平台禁用v8_enable_pointer_compression_shared_cagePR #58867支持自定义 inspector_protocol 路径PR #58839修复若干-Wunreachable-code告警PR #58901make distclean移除config.statusPR #58603eslint 迁移至stylistic/eslint-pluginPR #58623gyp-next 更新至 0.20.2PR #58788nodedownload 工具兼容 Python 3.14PR #58752。文档、测试与元数据文档侧修复了大量globals.md、http2、stream.md等页面的格式与链接问题并为 TypeScript 支持、--input-type补充历史条目PR #56350新增 collaboratorsislandryuPR #58714、IlyasShabiPR #58916ovflowd 回归核心协作者PR #58911测试侧新增 fs.cp、递归 readdir 等已知问题用例PR #58883、#58893并多处提升测试稳定性deflake。五、发布文章在 nodejs.org 仓库中的生成机制本文所依据的 v22.18.0.md 并非纯手工编写。从仓库源码结构看nodejs.org 提供了「一键生成发布博客」的脚本流水线理解它能帮你反推出发布文章每个部分的来源发布脚本入口scripts/release-post/index.mjs 以node index.mjs [version]方式运行不传版本号时会从 Node.js dist 的index.json自动抓取最新版本号findLatestVersion。数据抓取脚本通过fetchChangelog从对应版本线的 CHANGELOG 中按a idvX.Y.Z/a锚点切出该版本的变更区段正则rxSection通过fetchAuthor从 changelog 头部## 日期, Version X.Y.Z (LTS), author解析发布人正则rxReleaseAuthor/rxPolicy通过fetchShasums拉取SHASUMS256.txt.asc通过verifyDownloads逐条 HEAD 探测各下载文件是否可用不可用则标记*Coming soon*。模板渲染scripts/release-post/template.hbs 使用 Handlebars 将抓取到的 changelog、下载清单、SHASUMS 拼接成最终的 Markdownfrontmatterdate、category、title、layout、author也在模板中生成再经 Prettier 格式化后写入pages/en/blog/release/vX.Y.Z.md。下载清单规则scripts/release-post/downloadsTable.mjs 定义了 16 类安装包模板Windows x86/x64/arm64 的 MSI 与二进制、macOS pkg 与 darwin 二进制、Linux x64/ppc64le/s390x/armv7l/arm64、AIX、源码包等并按语义化版本过滤 16.0.0去掉 Apple Silicon 二进制、 19.9.0去掉 Windows ARM 产物、 23.0.0去掉 32 位 Windows、 24.0.0去掉 ARMv7。v22.18.0 因此同时包含 Windows 32 位与 ARMv7 产物。这类发布文章在站内还承担了「版本动态」的展示职责博客元数据由 scripts/blog-data/generate.mjs 通过流式读取每个 Markdown 的 frontmattercategory: release生成public/blog-data.json并由 next.json.mjs 注入构建util/blog.ts 中的mapBlogCategoryToPreviewType会把release类别映射为专门的预览类型分页则按 next.constants.mjs 中的BLOG_POSTS_PER_PAGE 6计算types/blog.ts 中定义了BlogPreviewType announcements | release | vulnerability。因此发布文章会直接出现在官网 Blog 的 release 栏目与年度归档year-2025、all中。六、下载产物与 SHASUMS 校验v22.18.0 的官方构建产物与校验信息同样收录在发布文章中。各平台安装包清单文件名格式如下平台安装包 / 二进制Windows 32-bitnode-v22.18.0-x86.msi/win-x86/node.exeWindows 64-bitnode-v22.18.0-x64.msi/win-x64/node.exeWindows ARM 64-bitnode-v22.18.0-arm64.msi/win-arm64/node.exemacOS 64-bitnode-v22.18.0.pkgmacOS Apple Siliconnode-v22.18.0-darwin-arm64.tar.gzmacOS Intelnode-v22.18.0-darwin-x64.tar.gzLinux 64-bitnode-v22.18.0-linux-x64.tar.xzLinux PPC LE 64-bitnode-v22.18.0-linux-ppc64le.tar.xzLinux s390xnode-v22.18.0-linux-s390x.tar.xzAIX 64-bitnode-v22.18.0-aix-ppc64.tar.gzARMv7 32-bitnode-v22.18.0-linux-armv7l.tar.xzARMv8 64-bitnode-v22.18.0-linux-arm64.tar.xzSource Codenode-v22.18.0.tar.gz全部产物存放于nodejs.org/dist/v22.18.0/目录API 文档位于nodejs.org/docs/v22.18.0/api/。官方同时发布了 PGP 签名的SHASUMS256.txt.asc其中包含每个文件的 SHA-256 校验和。发布文章末尾的### SHASUMS区块即该签名文件的内容格式如下节选-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 7bb75af308fc9f63e568968e0ef0e1600bb105abe2d2af99217ac72e9a24ffd0 node-v22.18.0-aix-ppc64.tar.gz 1dd46ad5edd1085da2b1a5b7e3e2a03d0266476786a7849a1207045fecc73d39 node-v22.18.0-arm64.msi ... -----BEGIN PGP SIGNATURE----- ... -----END PGP SIGNATURE-----校验流程建议先导入 Node.js 发布团队的 PGP 公钥用gpg --verify SHASUMS256.txt.asc验证签名可信再用sha256sum -c SHASUMS256.txt核对下载文件与官方校验和一致确保产物未被篡改。完整的 40 余行校验和条目可在发布原文的### SHASUMS一节逐条核对。七、升级建议与小结v22.18.0 作为 Jod LTS 版本线的一次常规 LTS 更新对日常开发者的直接收益集中在三点开箱即用执行.ts无需任何构建步骤即可运行纯类型注解脚本适合脚本化、CLI 工具等场景复杂 TS 语法仍需完整编译链路。新增实用 APIimport.meta.main入口判断、fileURLToPathBuffer路径 Buffer 化、Worker异步释放、--watch-kill-signal、SQLitereadBigInts分别解决了脚本入口判定、路径零拷贝、工作线程生命周期管理、watch 信号定制和大整数精度问题。安全与稳定性修复权限模型在 spawn 场景的传播增强、DNS/http/REPL 等模块的内存与超时修复以及 npm 10.9.3、sqlite 3.50.2 等依赖升级。所有变更的权威清单均可在 v22.18.0.md 中逐条查阅而想要复刻这类发布文章的生成流程可以参考 scripts/release-post 下的脚本与模板。如果你正在规划 CI 或本地环境的 Node 版本升级建议先在非生产环境验证项目中的 TypeScript 写法是否全部落在 Type Stripping 的支持语法范围内再决定是否启用这一默认行为。【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/18 16:57:37

Scrapy爬虫框架实战:从异步原理到分布式部署

简介:这是一份讲解开源Python网络爬虫框架Scrapy的PDF文档,专为Python爬虫初学者和希望系统掌握Scrapy架构的开发者准备。文档首先介绍网络爬虫的基本概念,然后围绕Scrapy引擎、调度器、下载器、蜘蛛、项目管道、下载器中间件、蜘蛛中间件等核…

2026/9/18 16:57:37

Bonsai-demo上下文长度调优:BONSAI_CTX自动RAM分层机制解析

Bonsai-demo上下文长度调优:BONSAI_CTX自动RAM分层机制解析 【免费下载链接】Bonsai-demo Bonsai Demo 项目地址: https://gitcode.com/GitHub_Trending/bo/Bonsai-demo Bonsai-demo 让你在本地运行 Bonsai / Ternary-Bonsai 系列小模型(最高 27B…

2026/9/18 19:22:55

运营报表数据异常自动分析与归因解释

运营报表数据异常自动分析与归因解释在很多企业的日常运营中,数据大盘每天都会发生各种波动:日活(DAU)突然下跌 15%、特定渠道的转化率骤降、退款率在某个时间段异常升高。 传统的做法是运营发现异常后,在群里艾特数据…

2026/9/18 19:22:55

基于YOLOv8与PyQt5的路面坑洞检测系统实战

1. 路面坑洞检测系统整体设计思路拆解1.1 为什么选择YOLOv8而不是传统图像处理方法做路面坑洞检测这件事,我最早试过用传统的边缘检测加阈值分割。OpenCV的Canny算子配合形态学操作,在光照均匀、坑洞边缘清晰的理想图片上确实能跑出结果,但一…

2026/9/18 19:22:55

维护者的情绪管理:面对恶意差评与无理索取

维护者的情绪管理:面对恶意差评与无理索取开源是一件充满理想主义色彩的事情,但只要你的项目获得了一定的曝光,你的 GitHub Issue 区就不可避免地会变成各种情绪的聚集地。 有的用户会因为一个微小的 Bug 在评论区破口大骂:“这么…

2026/9/18 19:22:55

轻量鉴权:基于 HMAC 签名的 API 认证

轻量鉴权:基于 HMAC 签名的 API 认证在构建微服务间通信、外部 Webhook 回调或轻量单体系统对外开放的 API 时,很多团队一上来就照搬复杂的 OAuth2、IdentityServer 或者是带有一堆配置的 JWT 刷新体系。 对于简单的服务端对服务端(S2S&#…

2026/9/18 19:22:55

C-NCAP 2024附录L详解:AEB/FCW测试时间基准与ADAS工程实践

简介:C-NCAP 2024版附录L是面向整车企业ADAS开发与测试工程师、安全评价人员及高校研究者的主动安全试验规程。文档完整规定了AEB、FCW等系统的试验术语、车辆坐标系、天气要求、VUT准备与预处理流程,并系统展开L.6.1的AEB C2C测试场景,如CCR…

2026/9/18 19:17:55

硬件工程师的硬核读法:如何用四层过滤法精读芯片资料

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 14:13:01

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/18 0:01:09

Google Colab 实战:运行模型、数据加载与报错排查

1. 为什么我劝你先搞懂 Colab 的运行模型1.1 Colab 到底是什么,跟本地跑代码差在哪Google Colab 简单说就是一台跑在浏览器里的 Linux 虚拟机,你打开一个 Notebook,背后就连上了一台带 GPU 的远程机器。你在单元格里敲的每一行 Python&#x…

2026/9/18 0:01:09

C语言数据类型与表达式详解

1. C语言数据与数据类型概述在C语言编程中,数据是程序处理的核心对象。理解数据的分类和特性是掌握C语言的基础。C语言中的数据主要分为四大类:常量、变量、表达式和函数。这些数据类型构成了C语言程序的基本元素,每种类型都有其独特的特性和…

2026/9/18 0:01:09

SQL时间字段指定时间段查询:区间语义、索引与时区避坑

上周排查一个线上问题&#xff0c;用户反馈"昨天的订单一条都没查到"&#xff0c;但数据库里明明躺着两千多条。最后定位下来&#xff0c;不是数据丢了&#xff0c;也不是接口挂了&#xff0c;而是那个查询条件把时间段写成了> 2024-05-20 00:00:00 AND < 2024…

2026/9/18 14:13:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/18 14:13:02

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/18 14:13:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码