Node.js v12.22.12 文档


目录

deprecation 弃用#

中英对照

  • 该 API 的使用是不安全的。

  • 改进的替代 API 可用。

  • 预计在未来的主要版本中会对 API 进行重大更改。

  • 仅文档

  • 运行时

  • 生命结束

仅文档弃用是仅在 Node.js API 文档中表达的弃用。 这些在运行 Node.js 时不会产生副作用。 某些仅文档的弃用在使用 --pending-deprecation 标志(或其替代的 NODE_PENDING_DEPRECATION=1 环境变量)启动时会触发运行时警告,类似于下面的运行时弃用。 支持该标志的仅文档弃用已在弃用的 API 列表 中明确标记。

默认情况下,运行时弃用将生成进程警告,该警告将在第一次使用弃用的 API 时打印到 stderr。 当使用 --throw-deprecation 命令行标志时,运行时弃用将导致抛出错误。

当特性已经或即将从 Node.js 中删除时,使用生命结束的弃用。

撤销的弃用#

中英对照

在这种情况下,本文件将更新与决定相关的信息。 但是,弃用标识符不会被修改。

弃用的 API 列表#

DEP0001: http.OutgoingMessage.prototype.flush#

中英对照

类型: 运行时

OutgoingMessage.prototype.flush() 方法已弃用。 改用 OutgoingMessage.prototype.flushHeaders()

DEP0002: require('_linklist')#

中英对照

类型: 生命结束

_linklist 模块已弃用。 请使用用户空间替代方案。

DEP0003: _writableState.buffer#

中英对照

类型: 运行时

_writableState.buffer 属性已弃用。

DEP0004: CryptoStream.prototype.readyState#

中英对照

类型: 生命结束

CryptoStream.prototype.readyState 属性已被删除。

DEP0005: Buffer() 构造函数#

中英对照

类型: 运行时(支持 --pending-deprecation

由于可能导致意外安全问题的 API 可用性问题,Buffer() 函数和 new Buffer() 构造函数已弃用。

作为替代方案,使用以下方法之一构造 Buffer 对象:

没有 --pending-deprecation,运行时警告只会出现在不在 node_modules 中的代码。 这意味着在依赖项中使用 Buffer() 不会出现弃用警告。 对于 --pending-deprecation,无论在何处使用 Buffer(),都会产生运行时警告。

DEP0006: child_process options.customFds#

中英对照

类型: 生命结束

child_process 模块的 spawn()fork()exec() 方法中,options.customFds 选项已弃用。 应该使用 options.stdio 选项。

DEP0007: 使用 worker.exitedAfterDisconnect 替换集群的 worker.suicide#

中英对照

类型: 生命结束

在 Node.js cluster 的早期版本中,名为 suicide 的布尔属性被添加到 Worker 对象中。 此属性的目的是提供 Worker 实例退出的方式和原因的指示。 在 Node.js 6.0.0 中, 旧属性已被弃用,并被新的 worker.exitedAfterDisconnect 属性替换。 旧版的属性名称没有准确描述实际的语义,并且不必要地充满了情感。

DEP0008: require('constants')#

中英对照

类型: 仅文档

constants 模块已弃用。 当需要访问与特定 Node.js 内置模块相关的常量时,开发者应改为参考相关模块公开的 constants 属性。 例如,require('fs').constantsrequire('os').constants

DEP0009: 没有摘要的 crypto.pbkdf2#

中英对照

类型: 运行时

在 Node.js 6.0 中,不指定摘要的 crypto.pbkdf2() API 已弃用,因为该方法默认使用非推荐的 'SHA1' 摘要。 以前,打印过弃用警告。 从 Node.js 8.0.0 开始,在 digest 设置为 undefined 的情况下调用 crypto.pbkdf2()crypto.pbkdf2Sync() 将抛出 TypeError

DEP0010: crypto.createCredentials#

中英对照

类型: 生命结束

crypto.createCredentials() API 已被移除。 请改用 tls.createSecureContext()

DEP0011: crypto.Credentials#

中英对照

类型: 生命结束

crypto.Credentials 类已被删除。 请改用 tls.SecureContext

DEP0012: Domain.dispose#

中英对照

类型: 生命结束

Domain.dispose() 已被删除。 改为通过在域上设置的错误事件处理程序显式从失败的 I/O 操作中恢复。

DEP0013: 没有回调的 fs 异步函数#

中英对照

类型: 生命结束

在 Node.js 10.0.0 及更高版本中调用没有回调的异步函数会引发 TypeError。 参阅 https://github.com/nodejs/node/pull/12562

DEP0014: fs.read 旧版的字符串接口#

中英对照

类型: 生命结束

fs.read() 旧版的 String 接口已弃用。 改用文档中提到的 Buffer API。

DEP0015: fs.readSync 旧版的字符串接口#

中英对照

类型: 生命结束

fs.readSync() 旧版的 String 接口已弃用。 改用文档中提到的 Buffer API。

DEP0016: GLOBAL/root#

中英对照

类型: 运行时

DEP0017: Intl.v8BreakIterator#

中英对照

类型: 生命结束

Intl.v8BreakIterator 是非标准的扩展,已被删除。 参阅 Intl.Segmenter

DEP0018: 未处理的 promise 拒绝#

中英对照

类型: 运行时

未处理的 promise 拒绝已弃用。 将来,未处理的 promise 拒绝将使用非零退出代码终止 Node.js 进程。

DEP0019: require('.') 在目录外解析#

中英对照

类型: 生命结束

在某些情况下,require('.') 可以在包目录之外解析。 此行为已被删除。

DEP0020: Server.connections#

中英对照

类型: 运行时

Server.connections 属性已弃用。 请改用 Server.getConnections() 方法。

DEP0021: Server.listenFD#

中英对照

类型: 生命结束

Server.listenFD() 方法已被弃用并删除。 请改用 Server.listen({fd: <number>})

DEP0022: os.tmpDir()#

中英对照

类型: 运行时

os.tmpDir() API 已弃用。 请改用 os.tmpdir()

DEP0023: os.getNetworkInterfaces()#

中英对照

类型: 生命结束

os.getNetworkInterfaces() 方法已弃用。 请改用 os.networkInterfaces() 方法。

DEP0024: REPLServer.prototype.convertToContext()#

中英对照

类型: 生命结束

REPLServer.prototype.convertToContext() API 已被移除。

DEP0025: require('sys')#

中英对照

类型: 运行时

sys 模块已弃用。 请改用 util 模块。

DEP0026: util.print()#

中英对照

类型: 生命结束

util.print() 已被删除。 请改用 console.log()

DEP0027: util.puts()#

中英对照

类型: 生命结束

util.puts() 已被删除。 请改用 console.log()

DEP0028: util.debug()#

中英对照

类型: 生命结束

util.debug() 已被删除。 请改用 console.error()

DEP0029: util.error()#

中英对照

类型: 生命结束

util.error() 已被删除。 请改用 console.error()

DEP0030: SlowBuffer#

中英对照

类型: 仅文档

SlowBuffer 类已弃用。 请改用 Buffer.allocUnsafeSlow(size)

DEP0031: ecdh.setPublicKey()#

中英对照

类型: 仅文档

ecdh.setPublicKey() 方法现在已被弃用,因为它包含在 API 中没有用。

DEP0032: domain 模块#

中英对照

类型: 仅文档

domain 模块已弃用,不应使用。

DEP0033: EventEmitter.listenerCount()#

中英对照

类型: 仅文档

EventEmitter.listenerCount(emitter, eventName) API 已弃用。 请改用 emitter.listenerCount(eventName)

DEP0034: fs.exists(path, callback)#

中英对照

类型: 仅文档

fs.exists(path, callback) API 已弃用。 请改用 fs.stat()fs.access()

DEP0035: fs.lchmod(path, mode, callback)#

中英对照

类型: 仅文档

fs.lchmod(path, mode, callback) API 已弃用。

DEP0036: fs.lchmodSync(path, mode)#

中英对照

类型: 仅文档

fs.lchmodSync(path, mode) API 已弃用。

DEP0037: fs.lchown(path, uid, gid, callback)#

中英对照

类型: 弃用已撤销

fs.lchown(path, uid, gid, callback) API 已被弃用。 由于在 libuv 中添加了必要的支持 API,因此弃用已被撤销。

DEP0038: fs.lchownSync(path, uid, gid)#

中英对照

类型: 弃用已撤销

fs.lchownSync(path, uid, gid) API 已被弃用。 由于在 libuv 中添加了必要的支持 API,因此弃用已被撤销。

DEP0039: require.extensions#

中英对照

类型: 仅文档

require.extensions 属性已弃用。

DEP0040: punycode 模块#

中英对照

类型: 仅文档

punycode 模块已弃用。 请使用用户空间替代方案。

DEP0041: NODE_REPL_HISTORY_FILE 环境变量#

中英对照

类型: 生命结束

NODE_REPL_HISTORY_FILE 环境变量已被删除。 请改用 NODE_REPL_HISTORY

DEP0042: tls.CryptoStream#

中英对照

类型: 生命结束

tls.CryptoStream 类已被删除。 请改用 tls.TLSSocket

DEP0043: tls.SecurePair#

中英对照

类型: 仅文档

tls.SecurePair 类已弃用。 请改用 tls.TLSSocket

DEP0044: util.isArray()#

中英对照

类型: 仅文档

util.isArray() API 已弃用。 请改用 Array.isArray()

DEP0045: util.isBoolean()#

中英对照

类型: 仅文档

util.isBoolean() API 已弃用。

DEP0046: util.isBuffer()#

中英对照

类型: 仅文档

util.isBuffer() API 已弃用。 请改用 Buffer.isBuffer()

DEP0047: util.isDate()#

中英对照

类型: 仅文档

util.isDate() API 已弃用。

DEP0048: util.isError()#

中英对照

类型: 仅文档

util.isError() API 已弃用。

DEP0049: util.isFunction()#

中英对照

类型: 仅文档

util.isFunction() API 已弃用。

DEP0050: util.isNull()#

中英对照

类型: 仅文档

util.isNull() API 已弃用。

DEP0051: util.isNullOrUndefined()#

中英对照

类型: 仅文档

util.isNullOrUndefined() API 已弃用。

DEP0052: util.isNumber()#

中英对照

类型: 仅文档

util.isNumber() API 已弃用。

DEP0053 util.isObject()#

中英对照

类型: 仅文档

util.isObject() API 已弃用。

DEP0054: util.isPrimitive()#

中英对照

类型: 仅文档

util.isPrimitive() API 已弃用。

DEP0055: util.isRegExp()#

中英对照

类型: 仅文档

util.isRegExp() API 已弃用。

DEP0056: util.isString()#

中英对照

类型: 仅文档

util.isString() API 已弃用。

DEP0057: util.isSymbol()#

中英对照

类型: 仅文档

util.isSymbol() API 已弃用。

DEP0058: util.isUndefined()#

中英对照

类型: 仅文档

util.isUndefined() API 已弃用。

DEP0059: util.log()#

中英对照

类型: 仅文档

util.log() API 已弃用。

DEP0060: util._extend()#

中英对照

类型: 仅文档

util._extend() API 已弃用。

DEP0061: fs.SyncWriteStream#

中英对照

类型: 生命结束

fs.SyncWriteStream 类从未打算成为可公开访问的 API,因此已被删除。 没有可用的替代 API。 请使用用户空间替代方案。

DEP0062: node --debug#

中英对照

类型: 生命结束

--debug 激活旧版的 V8 调试器接口,该接口在 V8 5.8 中被删除。它被替换为使用 --inspect 激活的检查器。

DEP0063: ServerResponse.prototype.writeHeader()#

中英对照

类型: 仅文档

http 模块 ServerResponse.prototype.writeHeader() API 已弃用。 请改用 ServerResponse.prototype.writeHead()

ServerResponse.prototype.writeHeader() 方法从未被记录为官方支持的 API。

DEP0064: tls.createSecurePair()#

中英对照

类型: 运行时

tls.createSecurePair() API 在 Node.js 0.11.3 的文档中已弃用。 用户应该改用 tls.Socket

DEP0065: repl.REPL_MODE_MAGIC 和 NODE_REPL_MODE=magic#

中英对照

类型: 生命结束

repl 模块的 REPL_MODE_MAGIC 常量,用于 replMode 选项,已被删除。 自 Node.js 6.0.0 以来,当导入 V8 5.0 时,它的行为在功能上与 REPL_MODE_SLOPPY 相同。 请改用 REPL_MODE_SLOPPY

NODE_REPL_MODE 环境变量用于设置交互式 node 会话的底层 replMode。 它的值 magic 也被删除了。 请改用 sloppy

DEP0066: OutgoingMessage.prototype._headers, OutgoingMessage.prototype._headerNames#

中英对照

类型: 运行时

http 模块 OutgoingMessage.prototype._headersOutgoingMessage.prototype._headerNames 属性已弃用。

OutgoingMessage.prototype._headersOutgoingMessage.prototype._headerNames 属性从未被记录为官方支持的属性。

DEP0067: OutgoingMessage.prototype._renderHeaders#

中英对照

类型: 仅文档

http 模块 OutgoingMessage.prototype._renderHeaders() API 已弃用。

OutgoingMessage.prototype._renderHeaders 属性从未被记录为官方支持的 API。

DEP0068: node debug#

中英对照

类型: 运行时

node debug 对应于旧版的命令行调试器,它已被替换为可通过 node inspect 获得的基于 V8 检查器的命令行调试器。

DEP0069: vm.runInDebugContext(string)#

中英对照

类型: 生命结束

DebugContext 已在 V8 中删除,在 Node.js 10+ 中不可用。

DebugContext 是实验性的 API。

DEP0070: async_hooks.currentId()#

中英对照

类型: 生命结束

为清楚起见,async_hooks.currentId() 已重命名为 async_hooks.executionAsyncId()

此更改是在 async_hooks 是实验性 API 时进行的。

DEP0071: async_hooks.triggerId()#

中英对照

类型: 生命结束

为清楚起见,async_hooks.triggerId() 已重命名为 async_hooks.triggerAsyncId()

此更改是在 async_hooks 是实验性 API 时进行的。

DEP0072: async_hooks.AsyncResource.triggerId()#

中英对照

类型: 生命结束

为清楚起见,async_hooks.AsyncResource.triggerId() 已重命名为 async_hooks.AsyncResource.triggerAsyncId()

此更改是在 async_hooks 是实验性 API 时进行的。

DEP0073: net.Server 的几个内部属性#

中英对照

类型: 生命结束

不适当的名称访问 net.Server 实例的多个内部、未记录的属性已弃用。

由于原始的 API 未记录并且通常对非内部代码没有用处,因此不提供替代 API。

DEP0074: REPLServer.bufferedCommand#

中英对照

类型: 运行时

REPLServer.bufferedCommand 属性已被 REPLServer.clearBufferedCommand() 弃用。

DEP0075: REPLServer.parseREPLKeyword()#

中英对照

类型: 运行时

REPLServer.parseREPLKeyword() 已从用户空间可见性中删除。

DEP0076: tls.parseCertString()#

中英对照

类型: 运行时

tls.parseCertString() 是简单的解析助手,被错误地公开了。 此函数通常可以替换为:

const querystring = require('querystring');
querystring.parse(str, '\n', '=');

此函数不完全等同于 querystring.parse()。 一个区别是 querystring.parse() 做 url 解码:

> querystring.parse('%E5%A5%BD=1', '\n', '=');
{ '好': '1' }
> tls.parseCertString('%E5%A5%BD=1');
{ '%E5%A5%BD': '1' }

DEP0077: Module._debug()#

中英对照

类型: 运行时

Module._debug() 已弃用。

Module._debug() 函数从未被记录为官方支持的 API。

DEP0078: REPLServer.turnOffEditorMode()#

中英对照

类型: 运行时

REPLServer.turnOffEditorMode() 已从用户空间可见性中删除。

DEP0079: 通过 .inspect() 对对象进行自定义检查函数#

中英对照

类型: 生命结束

对象上名为 inspect 的属性来指定 util.inspect() 的自定义检查函数已弃用。 改用 util.inspect.custom

DEP0080: path._makeLong()#

中英对照

类型: 仅文档

内部的 path._makeLong() 不打算供公众使用。 但是,用户空间模块发现它很有用。 内部的 API 已被弃用,取而代之的是相同的公共 path.toNamespacedPath() 方法。

DEP0081: 使用文件描述符的 fs.truncate()#

中英对照

类型: 运行时

fs.truncate() fs.truncateSync() 使用文件描述符已被弃用。 请使用 fs.ftruncate()fs.ftruncateSync() 来处理文件描述符。

DEP0082: REPLServer.prototype.memory()#

中英对照

类型: 运行时

REPLServer.prototype.memory() 只对 REPLServer 本身的内部机制是必需的。 不要使用此函数。

DEP0083: 通过将 ecdhCurve 设置为 false 来禁用 ECDH#

中英对照

类型: 生命结束。

tls.createSecureContext()tls.TLSSocketecdhCurve 选项可以设置为 false 以仅在服务器上完全禁用 ECDH。 在准备迁移到 OpenSSL 1.1.0 并与客户端保持一致时,此模式已弃用,现在不受支持。 改用 ciphers 参数。

DEP0084: 需要捆绑的内部依赖项#

中英对照

类型: 生命结束

从 Node.js 4.4.0 和 5.2.0 版本开始,一些仅供内部使用的模块被错误地通过 require() 暴露给用户代码。 这些模块是:

  • v8/tools/codemap
  • v8/tools/consarray
  • v8/tools/csvparser
  • v8/tools/logreader
  • v8/tools/profile_view
  • v8/tools/profile
  • v8/tools/SourceMap
  • v8/tools/splaytree
  • v8/tools/tickprocessor-driver
  • v8/tools/tickprocessor
  • node-inspect/lib/_inspect(从 7.6.0 开始)
  • node-inspect/lib/internal/inspect_client(从 7.6.0 开始)
  • node-inspect/lib/internal/inspect_repl(从 7.6.0 开始)

v8/* 模块没有任何导出,如果不按特定顺序导入实际上会抛出错误。 因此,几乎没有通过 require() 导入它们的合法用例。

如果这样做,则无需修改源代码。

DEP0085: AsyncHooks 的敏感 API#

中英对照

类型: 生命结束

AsyncHooks 的敏感 API 从未被记录并且存在各种小问题。 改用 AsyncResource API。 参阅 https://github.com/nodejs/node/issues/15572

DEP0086: 删除 runInAsyncIdScope#

中英对照

类型: 生命结束

runInAsyncIdScope 不会触发 'before''after' 事件,因此会导致很多问题。 参阅 https://github.com/nodejs/node/issues/14328

DEP0089: require('assert')#

中英对照

类型: 弃用已撤销

不建议直接导入断言,因为公开的函数使用松散的相等检查。 弃用被撤销是因为不鼓励使用 assert 模块,弃用导致开发者困惑。

DEP0090: 无效的 GCM 身份验证标签长度#

中英对照

类型: 生命结束

Node.js 用于支持调用 decipher.setAuthTag() 时 OpenSSL 接受的所有 GCM 身份验证标签长度。 从 Node.js v11.0.0 开始,只允许 128、120、112、104、96、64 和 32 位的身份验证标签长度。 根据 NIST SP 800-38D,其他长度的身份验证标签无效。

DEP0091: crypto.DEFAULT_ENCODING#

中英对照

类型: 运行时

crypto.DEFAULT_ENCODING 属性已弃用。

DEP0092: 顶层 this 绑定到 module.exports#

中英对照

类型: 仅文档

将属性分配给顶层 this 作为 module.exports 的替代方法已弃用。 开发者应该使用 exportsmodule.exports

DEP0093: crypto.fips 已弃用和替换#

中英对照

类型: 仅文档

crypto.fips 属性已弃用。 请改用 crypto.setFips()crypto.getFips()

DEP0094: 使用带有多个参数的 assert.fail()#

中英对照

类型: 运行时

使用多个参数的 assert.fail() 已弃用。 仅使用一个参数使用 assert.fail() 或使用不同的 assert 模块方法。

DEP0095: timers.enroll()#

中英对照

类型: 运行时

timers.enroll() 已弃用。 请改用公开记录的 setTimeout()setInterval()

DEP0096: timers.unenroll()#

中英对照

类型: 运行时

timers.unenroll() 已弃用。 请改用公开记录的 clearTimeout()clearInterval()

DEP0097: 具有域属性的 MakeCallback#

中英对照

类型: 运行时

添加 domain 属性携带上下文的 MakeCallback 的用户,应该开始使用 MakeCallbackCallbackScopeasync_context 变体,或者高层的 AsyncResource 类。

DEP0098: AsyncHooks 嵌入器 AsyncResource.emitBefore 和 AsyncResource.emitAfter API#

中英对照

类型: 生命结束

AsyncHooks 提供的嵌入式 API 暴露了 .emitBefore().emitAfter() 方法,这些方法很容易被错误地使用,从而导致不可恢复的错误。

改用 asyncResource.runInAsyncScope() API,它提供了更安全、更方便的替代方案。 参阅 https://github.com/nodejs/node/pull/18513

DEP0099: 异步上下文不感知的 node::MakeCallback C++ API#

中英对照

类型: 编译时

原生模块可用的某些版本的 node::MakeCallback API 已被弃用。 请使用接受 async_context 参数的 API 版本。

DEP0100: process.assert()#

中英对照

类型: 运行时

process.assert() 已弃用。 请改用 assert 模块。

这从来都不是记录的特性。

DEP0101: --with-lttng#

中英对照

类型: 生命结束

--with-lttng 编译时选项已被删除。

DEP0102: 在 Buffer#(read|write) 操作中使用 noAssert#

中英对照

类型: 生命结束

使用 noAssert 参数不再起作用。 所有输入都将被验证,无论它是否设置为真。 跳过验证可能会导致难以发现错误和崩溃。

DEP0103: process.binding('util').is[...] 类型检查#

中英对照

类型: 仅文档(支持 --pending-deprecation

一般应避免使用 process.binding()。 特别是类型检查方法可以使用 util.types 代替。

此弃用已被 process.binding() API (DEP0111) 的弃用所取代。

DEP0104: process.env 字符串强制转换#

中英对照

类型: 仅文档(支持 --pending-deprecation

将非字符串属性赋值给 process.env 时,赋值隐式转换为字符串。 如果分配的值不是字符串、布尔值或数字,则此行为已弃用。

请先将该属性转换为字符串,然后再将其分配给 process.env

DEP0105: decipher.finaltol#

中英对照

类型: 生命结束

decipher.finaltol() 从未被记录,它是 decipher.final() 的别名。 此 API 已移除,建议改用 decipher.final()

DEP0106: crypto.createCipher 和 crypto.createDecipher#

中英对照

类型: 运行时

应避免使用 crypto.createCipher()crypto.createDecipher(),因为它们使用弱密钥派生函数(不含盐的 MD5)和静态初始化向量。 推荐使用 crypto.pbkdf2()crypto.scrypt() 导出密钥,使用 crypto.createCipheriv()crypto.createDecipheriv() 分别获取 CipherDecipher 对象。

DEP0107: tls.convertNPNProtocols()#

中英对照

类型: 生命结束

这是未记录的帮助函数,不打算在 Node.js 核心之外使用,并且因删除 NPN(下一个协议协商)支持而过时。

DEP0108: zlib.bytesRead#

中英对照

类型: 运行时

弃用的 zlib.bytesWritten 别名。 选择这个原始名称是因为将值解释为引擎读取的字节数也是有意义的,但与 Node.js 中以这些名称公开值的其他流不一致。

DEP0109: 无效 URL 的 http、https 和 tls 支持#

中英对照

类型: 运行时

一些以前支持(但严格无效)的 URL 已通过 http.request()http.get()https.request()https.get()tls.checkServerIdentity() API 接受,因为它们已被旧版的 url.parse() API 接受。 上述 API 现在使用 WHATWG URL 解析器,它需要严格有效的 URL。 传入无效的 URL 已被弃用,未来将删除支持。

DEP0110: vm.Script 缓存的数据#

中英对照

类型: 仅文档

produceCachedData 选项已弃用。 改用 script.createCachedData()

DEP0111: process.binding()#

中英对照

类型: 仅文档(支持 --pending-deprecation

process.binding() 仅供 Node.js 内部代码使用。

DEP0112: dgram 私有的 API#

中英对照

类型: 运行时

dgram 模块以前包含几个 API,这些 API 从未打算在 Node.js 核心之外访问:Socket.prototype._handleSocket.prototype._receivingSocket.prototype._bindStateSocket.prototype._queueSocket.prototype._reuseAddrSocket.prototype._healthCheck()Socket.prototype._stopReceiving()dgram._createSocketHandle()

DEP0113: Cipher.setAuthTag(), Decipher.getAuthTag()#

中英对照

类型: 生命结束

Cipher.setAuthTag()Decipher.getAuthTag() 不再可用。 它们从未被记录,并且在被调用时会抛出。

DEP0114: crypto._toBuf()#

中英对照

类型: 生命结束

crypto._toBuf() 函数不是为 Node.js 核心之外的模块设计的,因此被移除了。

DEP0115: crypto.prng(), crypto.pseudoRandomBytes(), crypto.rng()#

中英对照

类型: 仅文档(支持 --pending-deprecation

在 Node.js 的最新版本中,crypto.randomBytes()crypto.pseudoRandomBytes() 没有区别。

DEP0116: 旧版的 URL API#

中英对照

类型: 仅文档

旧版的 URL API 已弃用。 这包括 url.format()url.parse()url.resolve()旧版的 urlObject。 请改用 WHATWG URL API

DEP0117: 原生加密句柄#

中英对照

类型: 生命结束

以前版本的 Node.js 通过 CipherDecipherDiffieHellmanDiffieHellmanGroupECDHHashHmacSignVerify 类的 _handle 属性向内部原生对象公开句柄。 _handle 属性已被移除,因为不当使用原生对象会导致应用程序崩溃。

DEP0118: dns.lookup() 支持虚假的主机名#

中英对照

类型: 运行时

由于向后兼容,以前的 Node.js 版本支持使用虚假主机名的 dns.lookup()(如 dns.lookup(false))。 此行为未记录,被认为在现实世界的应用程序中未使用。 在以后的 Node.js 版本中会出现错误。

DEP0119: process.binding('uv').errname() 私有的 API#

中英对照

类型: 仅文档(支持 --pending-deprecation

process.binding('uv').errname() 已弃用。 请改用 util.getSystemErrorName()

DEP0120: Windows 性能计数器支持#

中英对照

类型: 生命结束

Windows 性能计数器支持已从 Node.js 中删除。 未记录的 COUNTER_NET_SERVER_CONNECTION()COUNTER_NET_SERVER_CONNECTION_CLOSE()COUNTER_HTTP_SERVER_REQUEST()COUNTER_HTTP_SERVER_RESPONSE()COUNTER_HTTP_CLIENT_REQUEST()COUNTER_HTTP_CLIENT_RESPONSE() 函数已被弃用。

DEP0121: net._setSimultaneousAccepts()#

中英对照

类型: 运行时

未记录的 net._setSimultaneousAccepts() 函数最初用于在 Windows 上使用 child_processcluster 模块时进行调试和性能调整。 该函数一般不实用,正在被删除。 请参阅此处的讨论:https://github.com/nodejs/node/issues/18391

DEP0122: tls Server.prototype.setOptions()#

中英对照

类型: 运行时

请改用 Server.prototype.setSecureContext()

DEP0123: 将 TLS ServerName 设置为 IP 地址#

中英对照

类型: 运行时

RFC 6066 不允许将 TLS ServerName 设置为 IP 地址。 这将在以后的版本中被忽略。

DEP0124: 使用 REPLServer.rli#

中英对照

类型: 运行时

此属性是对实例本身的引用。

DEP0125: require('_stream_wrap')#

中英对照

类型: 运行时

_stream_wrap 模块已弃用。

DEP0126: timers.active()#

中英对照

类型: 运行时

以前未记录的 timers.active() 已弃用。 请改用公开记录的 timeout.refresh()。 如果需要重新引用超时,则可以使用 timeout.ref(),而不会影响 Node.js 10 以来的性能。

DEP0127: timers._unrefActive()#

中英对照

类型: 运行时

以前未记录和私有的 timers._unrefActive() 已弃用。 请改用公开记录的 timeout.refresh()。 如果需要取消引用超时,则可以使用 timeout.unref(),从 Node.js 10 开始不会影响性能。

DEP0128: 具有无效主条目和 index.js 文件的模块#

中英对照

类型: 仅文档(支持 --pending-deprecation

具有无效 main 条目(例如 ./does-not-exist.js)并且在顶层目录中也有 index.js 文件的模块将解析 index.js 文件。 这已被弃用,并且会在未来的 Node.js 版本中引发错误。

DEP0129: ChildProcess._channel#

中英对照

类型: 仅文档

spawn() 和类似函数返回的子进程对象的 _channel 属性不适合公共使用。 改用 ChildProcess.channel

DEP0130: Module.createRequireFromPath()#

中英对照

类型: 仅文档

Module.createRequireFromPath() 已弃用。 请改用 module.createRequire()

DEP0131: 旧版的 HTTP 解析器#

中英对照

类型: 运行时

DEP0132: 使用回调的 worker.terminate()#

中英对照

类型: 运行时

将回调传给 worker.terminate() 已弃用。 使用返回的 Promise 代替,或者监听工作进程的 'exit' 事件。

DEP0133: http connection#

中英对照

类型: 仅文档

选择 response.socket 胜过 response.connectionrequest.socket 胜过 request.connection

DEP0134: process._tickCallback#

中英对照

类型: 仅文档(支持 --pending-deprecation

process._tickCallback 属性从未被记录为官方支持的 API。

DEP0136: http finished#

中英对照

类型: 仅文档

response.finished 表示 response.end() 是否已被调用,而不是 'finish' 是否已触发并刷新底层数据。

为保持现有行为,response.finished 应替换为 response.writableEnded

DEP0139: 不使用参数的 process.umask()#

中英对照

类型: 仅文档

不带参数调用 process.umask() 会导致进程范围的 umask 被写入两次。 这会在线程之间引入竞争条件,并且是一个潜在的安全漏洞。 没有安全、跨平台的替代 API。

DEP0144: module.parent#

中英对照

类型: 仅文档

CommonJS 模块可以使用 module.parent 访问第一个需要它的模块。 此特性已被弃用,因为它在存在 ECMAScript 模块的情况下无法始终如一地工作,并且因为它给出了 CommonJS 模块图的不准确表示。

一些模块用它来检查它们是否是当前进程的入口点。 而是,建议比较 require.mainmodule

if (require.main === module) {
  // 仅当当前文件是入口点时才会运行的代码部分。
}

当查找需要当前的 CommonJS 模块时,可以使用 require.cachemodule.children

const moduleParents = Object.values(require.cache)
  .filter((m) => m.children.includes(module));
返回顶部