原文地址:https://mp.weixin.qq.com/s/pXF6La-hkY5phill3nE4fQ

xuehuayu.cn
作者 | GitHub
译者 | 王强
编辑 | 张之栋、王文婧
今天,Node.js 13.0 在 GitHub 上正式发布,同时 12.x 版本转入了长期支持阶段(LTS)。虽然 13.0 版本还并未进入 LTS,但在构建、控制台、域等诸多方面进行了“重大更改”。本文主要对 Node.js 13.0 的更新内容进行了梳理,希望能给正在了解 Node.js 最新版本的读者带来帮助。
重大更改

  • 断言:

  • 如果传递给 assert.throws() 或 assert.rejects() 的验证函数返回非 true 的值,则将抛出断言错误来高亮显示编程错误,替代原来的错误信息(Ruben Bridgewater)#28263。

  • 如果传递了构造函数来验证 assert.throws() 或 assert.reject() 抛出的错误实例,将抛出断言错误,替代原来的错误信息(Ruben Bridgewater)#28263。

  • 构建:

  • 新的 Node.js 版本默认支持完整 icu。这意味着新版包含了 ICU 支持的所有语言环境,并且与 Intl 相关的 API 会返回与之前不同的值(Richard Lau)#29887。

  • macOS 支持的最低 Xcode 版本已提升到 10。仍然可以使用 Xcode 8 构建 Node.js,但在 v13.x 未来版本中可能就不再支持了(Michael Dawson)#29622。

  • child_process:

  • ChildProcess._channel(DEP0129)现在是弃用的运行时(cjihrig)#27949。

  • 控制台:

  • 现在输出 console.timeEnd() 和 console.timeLog() 会自动选择合适的时间单位,不再一直使用毫秒了(Xavier Stouder)#29251。

  • deps:

  • V8 引擎已更新到 7.8 版。新版提升了对象解构的性能、改善了内存使用并缩短了 WebAssembly 启动时间(Myles Borins)#29694。

  • 域:

  • 现在域的错误处理工作时会将活动域设置为域的父级,以防止内部递归(Julien Gilli)#26211。

  • fs:

  • 移除了未记录的方法 FSWatcher.prototype.start()(Lucas Holmquist)#29905。

  • 现在在 ReadStream 或 WriteStream 上调用 open() 方法会发出一个运行时弃用警告。这些方法应该是内部的,不应由用户代码调用(Robert Nagy)#29061。

  • fs.read/write、fs.readSync/writeSync 和 fd.read/write 现在接受任何安全整数作为其 offset 参数。offset 的值也不是强制的,因此必须将有效的类型传递给函数(Zach Bjornson)#26572。

  • http:

  • 中止的请求在 aborted 后不再发出 end 或 error 事件(Robert Nagy)#27984,#20077。

  • 套接字错误后将不再发出数据(Robert Nagy)#28711。

  • 旧版 HTTP 解析器(以前在 –http-parser=legacy 标志下面)已移除(Anna Henningsen)#29589。

  • 现在已将 HTTP 请求的 host 选项验证为字符串值(Giorgos Ntemiris)#29568。

  • 现在 request.connection 和 response.connection 属性都是弃用的运行时。应该使用等效的 request.socket 和 response.socket(Robert Nagy)#29015。

  • http,http2:

  • 默认服务器超时已移除(Ali Ijaz Sheikh)#27558。

  • 425 状态代码名称已符合 RFC8470。名称从“Unordered Collection”改为“Too Early”(Sergei Osipov)#29880。

  • lib:

  • error.errno 属性现在将始终是数字。要获得字符串值,请改用 error.code(Joyee Cheung)#28140。

  • 模块:

  • module.createRequireFromPath() 已弃用。请改用 module.createRequire()(cjihrig)#27951。

  • src:

  • 现在,更改 process.env.TZ 的值将清除 tz 缓存。这将影响一些方法使用的默认时区,如 Date.prototype.toString(Ben Noordhuis)#20026。

  • 流:

  • 流的时序和行为在许多方面做出了改进和增强。请查看下面对应的各个提交以获取更多信息。

原文链接:https://github.com/nodejs/node/releases/tag/v13.0.0

xuehuayu.cn