Node.js v20.16.0(长期支持版)

Node.js v20.16.0(长期支持版)

💡 原文英文,约4800词,阅读约需18分钟。
📝

内容提要

Node.js v20.16.0(LTS)已发布。此版本包含若干错误修复和改进。该版本引入了process.getBuiltinModule(id)方法,该方法允许在全局可用的函数中加载内置模块。它还不再支持OpenSSL 3中的自定义引擎,并修复了Debugger.setAsyncCallStackDepth函数中的一个错误。此版本还包括对各种依赖项的更新和对测试运行器的改进。

🔎

延伸解读

process.getBuiltinModule 的实用场景

process.getBuiltinModule(id) 为需要在非 Node.js 环境(如浏览器)中运行的 ES 模块提供了一种条件加载 Node.js 内置模块的方式。通过检查 globalThis.process?.getBuiltinModule 是否存在,模块可以判断当前是否运行在 Node.js 中,并同步加载内置模块,避免了使用 import 可能抛出的解析错误,也无需将模块改为异步。

OpenSSL 3 自定义引擎支持移除的影响

Node.js v20.16.0 不再支持 OpenSSL 3 中的自定义引擎,这意味着依赖 clientCertEngine、privateKeyEngine、privateKeyIdentifier 选项或 crypto.setEngine() 的代码将无法正常工作。开发者应按照 OpenSSL 的建议迁移到新的提供者(provider)模型,以确保 TLS 和加密功能的兼容性。

调试器异步堆栈深度修复的意义

修复了 Debugger.setAsyncCallStackDepth 错误调用 enable 函数的问题。此前,当 Chrome DevTools 发送深度为 0 的 setAsyncCallStackDepth 请求时,异步钩子无法正确关闭,可能导致性能分析数据不准确或资源泄漏。该修复确保了异步钩子能在深度为 0 时正确禁用。

❓

Q&A

Node.js v20.16.0版本有什么新特性?

Node.js v20.16.0引入了process.getBuiltinModule(id)方法,允许在全局可用的函数中加载内置模块,并修复了Debugger.setAsyncCallStackDepth函数中的错误。

如何使用process.getBuiltinModule(id)方法?

可以通过调用globalThis.process.getBuiltinModule(id)来加载指定的内置模块,如果id对应的模块存在,则返回该模块,否则返回undefined。

Node.js v20.16.0对OpenSSL的支持有什么变化?

该版本不再支持OpenSSL 3中的自定义引擎,建议用户切换到新的提供者模型。

Node.js v20.16.0修复了哪些错误?

修复了Debugger.setAsyncCallStackDepth函数中的错误,确保异步钩子在深度为0时正确关闭。

Node.js v20.16.0的测试运行器有哪些改进?

该版本对测试运行器进行了改进,具体细节未详细说明,但整体性能和功能得到了提升。

Node.js v20.16.0的依赖项更新了哪些?

该版本更新了各种依赖项,具体更新内容未详细列出。

🏷️

标签

➡️

继续阅读