Node.js v17 来了,看看都有哪些新功能?

Node.js v17 版本已发布,看看都取代了 v16 做为当前版本,有新新的看看都 v17 版本提供了一些新功能:基于 Promise 的其它核心模块 API、错误堆栈尾部增加 Node.js 版本信息、有新OpenSSL 3.0 支持、看看都v8 JavaScript 引擎更新至 9.5。有新
基于 Promise 的看看都 API
Node.js 项目的一项持续性战略计划是为 Node.js 核心模块提供基于 Promise 的 API 支持,近年来已为 timer、有新stream 模块提供了 Promise API 支持。看看都
Node.js v17 版本为 readline 模块提供了基于 Promise 的有新 API 支持。该模块提供了一个接口用于从一个可读流对象逐行读取数据。看看都
结合 process.stdin 可读取用户在终端输入的有新数据。如下例所示:
// test.mjs import * as readline from "node:readline/promises"; import { stdin as input,看看都 stdout as output } from process; const rl = readline.createInterface({ input, output }); const answer = await rl.question(“Nodejs技术栈” 的域名是什么:); console.log(`答案: ${answer}`); rl.close();运行之后,效果如下所示:

readline 模块的有新更多信息参考 readline_readline。
错误堆栈增加 Node.js 版本
堆栈跟踪是看看都诊断应用程序错误信息的重要组成部分,在 Node.js v17 版本中,如果因为一些致命的错误导致进程退出,在错误堆栈的尾部将包含 Node.js 的版本信息。源码库

如果想忽略该信息,运行时在命令行指定 --no-extra-info-on-fatal-exception 标志。
OpenSSL 3.0 支持
Node.js v17 版本包含了近期发布的 OpenSSL 3.0,根据 OpenSSL 的发布策略,OpenSSL 1.1.1 将在 2023-09-11 结束支持,这个日期也在 Node.js v18 LTS 结束日期之前。
因为 OpenSSL 3.0 对允许的算法和密钥大小增加了严格的限制,预计会对生态系统造成一些影响,在 Node.js v17 版本包含 OpenSSL 3.0 以便在下一个 LTS 版本之前为用户的测试和反馈留出时间。
例如,md4 这是 OpenSSL 3.0 默认不再允许的一个算法,如果是在 Node.js 17 之前的 Node 版本中,应用程序是可以正常运行的,但在 Node.js v17 中将抛出一个 error code 为 ERR_OSSL_EVP_UNSUPPORTED 的错误信息。
import crypto from crypto; console.log(crypto.createHash(md4).update(123, utf8).digest(hex))Node.js v17 版本下运行之后得到如下错误信息。

一个临时的解决方法是运行时增加 --openssl-legacy-provider 标志,应用程序不在报错。
$ node --openssl-legacy-provider test.mjs c58cda49f00748a3bc0fcfa511d516cbV8 更新至 9.5
v8 在 8.1 版本开启了 Intl.DisplayNames API,支持语言、云南idc服务商区域、货币、脚本四种类型,现在添加了两种新的类型:calendar、dateTimeField,分别返回不同的日历类型和日期时间字段的显示名称。对于国际化应用很有帮助。
const esCalendarNames = new Intl.DisplayNames([zh], { type: calendar }); console.log(esCalendarNames.of(roc)); // 民国纪年 const enCalendarNames = new Intl.DisplayNames([en], { type: calendar }); console.log(enCalendarNames.of(roc)); // Minguo Calendar日期时间字段国际化名称展示。
function printDate(dateTimeField) { console.log( `${dateTimeField.of(year)} ${dateTimeField.of(month)} ${dateTimeField.of(day)}` ); } printDate(new Intl.DisplayNames([zh], { type: dateTimeField })) // 年 月 日 printDate(new Intl.DisplayNames([en], { type: dateTimeField })) // year month day printDate(new Intl.DisplayNames([KOR], { type: dateTimeField })) // 년 월 일 printDate(new Intl.DisplayNames([THA], { type: dateTimeField })) // ปี เดือน วันIntl.DateTimeFormat API 在 v8 9.5 版本中为 timeZoneName 选项新增加了四个值:shortGeneric、longGeneric、shortOffset、longOffset。
通过以下代码示例可看到之间的区别。
console.log(new Intl.DateTimeFormat(zh).format(new Date())); // 2021/01/01 console.log(new Intl.DateTimeFormat(zh, { timeZoneName: shortGeneric }).format(new Date())); // 2021/01/01 中国时间 console.log(new Intl.DateTimeFormat(zh, { timeZoneName: longGeneric }).format(new Date())); // 2021/01/01 中国标准时间 console.log(new Intl.DateTimeFormat(zh, { timeZoneName: shortOffset }).format(new Date())); // 2021/01/01 GMT+8 console.log(new Intl.DateTimeFormat(zh, { timeZoneName: longOffset }).format(new Date())); // 2021/01/01 GMT+08:00参见 v8 9.5 release 文档 阅读更多信息。
其它信息
按照 Node.js 发布时间表,Node.js v12 将于 2022 年 4 月结束生命周期。Node.js v16 在 2021 年 10 月 26 升级为 LTS,即长期支持版本。
Node.js 的奇数版本不是稳定的版本(例如,当前的 Node.js v17 ),它的生命周期很短,不要用于生产环境。
对 Node.js 版本信息不了的、站群服务器不知道如何安装 Node.js 的参考文章 “Node.js 版本知多少?又该如何选择?”。
Reference
https://medium.com/the-node-js-collection/node-js-17-is-here-8dba1e14e382
https://nodejs.org/en/blog/release/v17.0.0/
相关文章
- 摘要:随着计算机的普及,越来越多的人开始自己组装电脑,但是对于不熟悉电脑硬件和软件的人来说,安装和配置电脑程序可能是一项困扰。而装机助手就是为了解决这一问题而生的工具,它可以帮助用户自动...2025-11-04
- 摘要:手机信号是现代通信的核心,对于用户来说,一个稳定强劲的信号是必不可少的。在众多手机品牌中,Pro6Plus以其出色的信号表现赢得了广大用户的喜爱和认可。Pro6Plus信号...2025-11-04
笔记本电脑配置基本知识(了解笔记本电脑配置的重要性与基本要素)
摘要:在如今科技高速发展的时代,笔记本电脑已成为人们日常生活中不可或缺的工具。然而,对于很多人来说,理解笔记本电脑的配置和了解其基本知识仍然是一项挑战。本文将重点介绍笔记本电脑配置的基本...2025-11-04电脑笔记本重装系统的步骤及注意事项(以电脑怎么重装系统为主题的详细指南)
摘要:随着时间的推移,我们的电脑笔记本可能会变得越来越慢,出现各种问题。这时候,重装系统是一个解决办法。本文将为您详细介绍如何以电脑怎么重装系统,以及需要注意的事项。一、备份数据...2025-11-04TCL49E5700AUD(一览TCL49E5700AUD的创新功能与卓越性能,领略智能科技的魅力)
摘要:在当今数字化时代,智能电视成为人们生活中不可或缺的娱乐和信息获取方式。TCL49E5700AUD作为TCL家族中的一员,凭借其卓越的性能和创新的功能,成为引领智能电视新潮流的佼佼者...2025-11-04手机传染病毒的危害与防范(揭秘手机传播病毒的陷阱,保护个人信息安全)
摘要:在现代社会中,手机已经成为人们生活的必需品。然而,随着科技的不断进步,手机不仅给我们带来了便利,同时也给我们的个人信息安全带来了新的挑战。手机传染病毒成为一种普遍而严重的问题,它不...2025-11-04

最新评论