Node.js v24.0.0 文档
- Node.js v24.0.0
-
目录
- 废弃的 API
- 撤销弃用
- 已弃用的 API 列表
- DEP0001:
http.OutgoingMessage.prototype.flush
- DEP0002:
require('_linklist')
- DEP0003:
_writableState.buffer
- DEP0004:
CryptoStream.prototype.readyState
- DEP0005:
Buffer()
构造函数 - DEP0006:
child_process
options.customFds
- DEP0007: 将
cluster
worker.suicide
替换为worker.exitedAfterDisconnect
- DEP0008:
require('node:constants')
- DEP0009: 没有摘要的
crypto.pbkdf2
- DEP0010:
crypto.createCredentials
- DEP0011:
crypto.Credentials
- DEP0012:
Domain.dispose
- DEP0013: 没有回调的
fs
异步函数 - DEP0014:
fs.read
传统 String 接口 - DEP0015:
fs.readSync
传统 String 接口 - DEP0016:
GLOBAL
/root
- DEP0017:
Intl.v8BreakIterator
- DEP0018: 未处理的 promise 拒绝
- DEP0019: 在目录外解析的
require('.')
- DEP0020:
Server.connections
- DEP0021:
Server.listenFD
- DEP0022:
os.tmpDir()
- DEP0023:
os.getNetworkInterfaces()
- DEP0024:
REPLServer.prototype.convertToContext()
- DEP0025:
require('node:sys')
- DEP0026:
util.print()
- DEP0027:
util.puts()
- DEP0028:
util.debug()
- DEP0029:
util.error()
- DEP0030:
SlowBuffer
- DEP0031:
ecdh.setPublicKey()
- DEP0032:
node:domain
模块 - DEP0033:
EventEmitter.listenerCount()
- DEP0034:
fs.exists(path, callback)
- DEP0035:
fs.lchmod(path, mode, callback)
- DEP0036:
fs.lchmodSync(path, mode)
- DEP0037:
fs.lchown(path, uid, gid, callback)
- DEP0038:
fs.lchownSync(path, uid, gid)
- DEP0039:
require.extensions
- DEP0040:
node:punycode
模块 - DEP0041:
NODE_REPL_HISTORY_FILE
环境变量 - DEP0042:
tls.CryptoStream
- DEP0043:
tls.SecurePair
- DEP0044:
util.isArray()
- DEP0045:
util.isBoolean()
- DEP0046:
util.isBuffer()
- DEP0047:
util.isDate()
- DEP0048:
util.isError()
- DEP0049:
util.isFunction()
- DEP0050:
util.isNull()
- DEP0051:
util.isNullOrUndefined()
- DEP0052:
util.isNumber()
- DEP0053:
util.isObject()
- DEP0054:
util.isPrimitive()
- DEP0055:
util.isRegExp()
- DEP0056:
util.isString()
- DEP0057:
util.isSymbol()
- DEP0058:
util.isUndefined()
- DEP0059:
util.log()
- DEP0060:
util._extend()
- DEP0061:
fs.SyncWriteStream
- DEP0062:
node --debug
- DEP0063:
ServerResponse.prototype.writeHeader()
- DEP0064:
tls.createSecurePair()
- DEP0065:
repl.REPL_MODE_MAGIC
和NODE_REPL_MODE=magic
- DEP0066:
OutgoingMessage.prototype._headers, OutgoingMessage.prototype._headerNames
- DEP0067:
OutgoingMessage.prototype._renderHeaders
- DEP0068:
node debug
- DEP0069:
vm.runInDebugContext(string)
- DEP0070:
async_hooks.currentId()
- DEP0071:
async_hooks.triggerId()
- DEP0072:
async_hooks.AsyncResource.triggerId()
- DEP0073:
net.Server
的几个内部属性 - DEP0074:
REPLServer.bufferedCommand
- DEP0075:
REPLServer.parseREPLKeyword()
- DEP0076:
tls.parseCertString()
- DEP0077:
Module._debug()
- DEP0078:
REPLServer.turnOffEditorMode()
- DEP0079: 通过
.inspect()
在对象上自定义检查函数 - DEP0080:
path._makeLong()
- DEP0081: 使用文件描述符的
fs.truncate()
- DEP0082:
REPLServer.prototype.memory()
- DEP0083: 通过将
ecdhCurve
设置为false
来禁用 ECDH - DEP0084: 需要捆绑的内部依赖项
- DEP0085: AsyncHooks 敏感 API
- DEP0086: 移除
runInAsyncIdScope
- DEP0089:
require('node:assert')
- DEP0090: 无效的 GCM 身份验证标签长度
- DEP0091:
crypto.DEFAULT_ENCODING
- DEP0092: 绑定到
module.exports
的顶层this
- DEP0093:
crypto.fips
已弃用并被替换 - DEP0094: 使用多个参数的
assert.fail()
- DEP0095:
timers.enroll()
- DEP0096:
timers.unenroll()
- DEP0097: 带有
domain
属性的MakeCallback
- DEP0098: AsyncHooks 嵌入器
AsyncResource.emitBefore
和AsyncResource.emitAfter
APIs - DEP0099: 异步上下文不感知的
node::MakeCallback
C++ APIs - DEP0100:
process.assert()
- DEP0101:
--with-lttng
- DEP0102: 在
Buffer#(read|write)
操作中使用noAssert
- DEP0103:
process.binding('util').is[...]
类型检查 - DEP0104:
process.env
字符串强制转换 - DEP0105:
decipher.finaltol
- DEP0106:
crypto.createCipher
和crypto.createDecipher
- DEP0107:
tls.convertNPNProtocols()
- DEP0108:
zlib.bytesRead
- DEP0109:
http
、https
和tls
支持无效的 URL - DEP0110:
vm.Script
缓存数据 - DEP0111:
process.binding()
- DEP0112:
dgram
私有 APIs - DEP0113:
Cipher.setAuthTag()
、Decipher.getAuthTag()
- DEP0114:
crypto._toBuf()
- DEP0115:
crypto.prng()
、crypto.pseudoRandomBytes()
、crypto.rng()
- DEP0116: 传统 URL API
- DEP0117: 本地 crypto handles
- DEP0118:
dns.lookup()
支持虚假主机名 - DEP0119:
process.binding('uv').errname()
私有 API - DEP0120: Windows 性能计数器支持
- DEP0121:
net._setSimultaneousAccepts()
- DEP0122:
tls
Server.prototype.setOptions()
- DEP0123: 将 TLS ServerName 设置为 IP 地址
- DEP0124: 使用
REPLServer.rli
- DEP0125:
require('node:_stream_wrap')
- DEP0126:
timers.active()
- DEP0127:
timers._unrefActive()
- DEP0128: 带有无效
main
条目和index.js
文件的模块 - DEP0129:
ChildProcess._channel
- DEP0130:
Module.createRequireFromPath()
- DEP0131: 传统 HTTP 解析器
- DEP0132: 带有回调的
worker.terminate()
- DEP0133:
http
connection
- DEP0134:
process._tickCallback
- DEP0135:
WriteStream.open()
和ReadStream.open()
是内部的 - DEP0136:
http
finished
- DEP0137: 在垃圾回收时关闭 fs.FileHandle
- DEP0138:
process.mainModule
- DEP0139: 没有参数的
process.umask()
- DEP0140: 使用
request.destroy()
而不是request.abort()
- DEP0141:
repl.inputStream
和repl.outputStream
- DEP0142:
repl._builtinLibs
- DEP0143:
Transform._transformState
- DEP0144:
module.parent
- DEP0145:
socket.bufferSize
- DEP0146:
new crypto.Certificate()
- DEP0147:
fs.rmdir(path, { recursive: true })
- DEP0148:
"exports"
中的文件夹映射(尾部"/"
) - DEP0149:
http.IncomingMessage#connection
- DEP0150: 更改
process.config
的值 - DEP0151: 主要索引查找和扩展搜索
- DEP0152: 扩展 PerformanceEntry 属性
- DEP0153:
dns.lookup
和dnsPromises.lookup
选项类型强制转换 - DEP0154: RSA-PSS 生成密钥对选项
- DEP0155: 模式说明符分辨率中的尾部斜杠
- DEP0156:
.aborted
属性和http
中的'abort'
,'aborted'
事件 - DEP0157: 流中的 Thenable 支持
- DEP0158:
buffer.slice(start, end)
- DEP0159:
ERR_INVALID_CALLBACK
- DEP0160:
process.on('multipleResolves', handler)
- DEP0161:
process._getActiveRequests()
和process._getActiveHandles()
- DEP0162:
fs.write()
、fs.writeFileSync()
强制转换为字符串 - DEP0163:
channel.subscribe(onMessage)
、channel.unsubscribe(onMessage)
- DEP0164:
process.exit(code)
、process.exitCode
强制转换为整数 - DEP0165:
--trace-atomics-wait
- DEP0166: 导入和导出目标中的双斜杠
- DEP0167: 弱
DiffieHellmanGroup
实例(modp1
、modp2
、modp5
) - DEP0168: Node-API 回调中未处理的异常
- DEP0169: 不安全的 url.parse()
- DEP0170: 使用
url.parse()
时的无效端口 - DEP0171:
http.IncomingMessage
标头和尾部的设置器 - DEP0172:
AsyncResource
绑定函数的asyncResource
属性 - DEP0173:
assert.CallTracker
类 - DEP0174: 在返回
Promise
的函数上调用promisify
- DEP0175:
util.toUSVString
- DEP0176:
fs.F_OK
、fs.R_OK
、fs.W_OK
、fs.X_OK
- DEP0177:
util.types.isWebAssemblyCompiledModule
- DEP0178:
dirent.path
- DEP0179:
Hash
构造函数 - DEP0180:
fs.Stats
构造函数 - DEP0181:
Hmac
构造函数 - DEP0182: 没有显式
authTagLength
的短 GCM 身份验证标签 - DEP0183: 基于 OpenSSL 引擎的 API
- DEP0184: 在没有
new
的情况下实例化node:zlib
类 - DEP0185: 在没有
new
的情况下实例化node:repl
类 - DEP0187: 将无效参数类型传递给
fs.existsSync
- DEP0188:
process.features.ipv6
和process.features.uv
- DEP0189:
process.features.tls_*
- DEP0190: 将
args
传递给带有shell
选项true
的node:child_process
execFile
/spawn
- DEP0191:
repl.builtinModules
- DEP0001:
- 废弃的 API
-
索引
- 断言测试
- 异步上下文追踪
- 异步钩子
- Buffer
- C++ 插件
- 使用 Node-API 的 C/C++ 插件
- C++ 嵌入器 API
- 子进程
- 集群
- 命令行选项
- Console
- Crypto
- 调试器
- 废弃的 API
- 诊断通道
- DNS
- Domain
- 错误
- Events
- 文件系统
- 全局变量
- HTTP
- HTTP/2
- HTTPS
- Inspector
- 国际化
- 模块:CommonJS 模块
- 模块:ECMAScript 模块
- 模块:
node:module
API - 模块:包
- 模块:TypeScript
- Net
- OS
- Path
- 性能钩子
- 权限
- Process
- Punycode
- 查询字符串
- Readline
- REPL
- Report
- 单可执行应用程序
- SQLite
- Stream
- 字符串解码器
- 测试运行器
- Timers
- TLS/SSL
- 跟踪事件
- TTY
- UDP/数据报
- URL
- 实用工具
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- Worker 线程
- Zlib
- 其他版本
- 选项
已弃用的 API#
Node.js API 可能会因以下任何原因而被弃用
- 使用该 API 不安全。
- 有改进的替代 API 可用。
- 预计在未来的主要版本中会对 API 进行重大更改。
Node.js 使用四种类型的弃用
- 仅文档
- 应用程序(仅限非
node_modules
代码) - 运行时(所有代码)
- 生命周期结束
仅文档弃用是指仅在 Node.js API 文档中表达的弃用。 这些在运行 Node.js 时不会产生任何副作用。 当使用--pending-deprecation
标志(或其替代方案,NODE_PENDING_DEPRECATION=1
环境变量)启动时,某些仅文档弃用会触发运行时警告,类似于下面的运行时弃用。 在已弃用的 API 列表中,明确地将支持该标志的仅文档弃用标记为如此。
对于仅限非node_modules
代码的应用程序弃用,默认情况下,会生成一个进程警告,该警告会在第一次在非从node_modules
加载的代码中使用已弃用的 API 时打印到 stderr
。 当使用--throw-deprecation
命令行标志时,运行时弃用会导致抛出错误。 当使用--pending-deprecation
时,也会为从node_modules
加载的代码发出警告。
所有代码的运行时弃用与非node_modules
代码的运行时弃用类似,不同之处在于它也会为从node_modules
加载的代码发出警告。
当功能已经或将要从 Node.js 中移除时,使用生命周期结束弃用。
撤销弃用#
有时,可能会撤销 API 的弃用。 在这种情况下,本文档将更新与该决定相关的信息。 但是,弃用标识符不会被修改。
已弃用的 API 列表#
DEP0001: http.OutgoingMessage.prototype.flush
#
类型: 生命周期结束
OutgoingMessage.prototype.flush()
已被移除。 请改用 OutgoingMessage.prototype.flushHeaders()
。
DEP0003: _writableState.buffer
#
类型: 生命周期结束
_writableState.buffer
已被移除。 请改用 _writableState.getBuffer()
。
DEP0005: Buffer()
构造函数#
类型: 应用程序(仅限非node_modules
代码)
由于 API 可用性问题可能导致意外的安全问题,因此 Buffer()
函数和 new Buffer()
构造函数已被弃用。
作为替代方案,请使用以下构造 Buffer
对象的方法之一
Buffer.alloc(size[, fill[, encoding]])
:创建具有初始化内存的Buffer
。Buffer.allocUnsafe(size)
:创建具有未初始化内存的Buffer
。Buffer.allocUnsafeSlow(size)
:创建具有未初始化内存的Buffer
。Buffer.from(array)
:创建具有array
副本的Buffer
Buffer.from(arrayBuffer[, byteOffset[, length]])
- 创建包装给定arrayBuffer
的Buffer
。Buffer.from(buffer)
:创建复制buffer
的Buffer
。Buffer.from(string[, encoding])
:创建复制string
的Buffer
。
如果没有 --pending-deprecation
,运行时警告仅针对不在 node_modules
中的代码发生。 这意味着在依赖项中使用 Buffer()
不会有弃用警告。 使用 --pending-deprecation
,无论 Buffer()
用法在哪里发生,都会产生运行时警告。
DEP0006: child_process
options.customFds
#
类型: 生命周期结束
在 child_process
模块的 spawn()
、fork()
和 exec()
方法中,options.customFds
选项已弃用。 应改为使用 options.stdio
选项。
DEP0007: 将 cluster
worker.suicide
替换为 worker.exitedAfterDisconnect
#
类型: 生命周期结束
在早期版本的 Node.js cluster
中,一个名为 suicide
的布尔属性被添加到 Worker
对象。 此属性的目的是提供关于 Worker
实例如何以及为何退出的指示。 在 Node.js 6.0.0 中,旧属性已被弃用,并替换为新的 worker.exitedAfterDisconnect
属性。 旧属性名称没有精确地描述实际语义,并且是不必要的带有情感色彩。
DEP0008: require('node:constants')
#
类型: 仅文档
node:constants
模块已弃用。 当需要访问与特定 Node.js 内置模块相关的常量时,开发人员应改为参考相关模块公开的 constants
属性。 例如,require('node:fs').constants
和 require('node:os').constants
。
DEP0009: 没有摘要的 crypto.pbkdf2
#
类型: 生命周期结束
使用没有指定摘要的 crypto.pbkdf2()
API 在 Node.js 6.0 中已被弃用,因为该方法默认使用不推荐的 'SHA1'
摘要。 以前,会打印弃用警告。 从 Node.js 8.0.0 开始,将 digest
设置为 undefined
调用 crypto.pbkdf2()
或 crypto.pbkdf2Sync()
将会抛出 TypeError
。
从 Node.js v11.0.0 开始,将 digest
设置为 null
调用这些函数将打印弃用警告,以便与 digest
为 undefined
时的行为对齐。
但是,现在传递 undefined
或 null
都会抛出 TypeError
。
DEP0010: crypto.createCredentials
#
类型: 生命周期结束
crypto.createCredentials()
API 已被移除。 请改用 tls.createSecureContext()
。
DEP0013: 没有回调的 fs
异步函数#
类型: 生命周期结束
从 Node.js 10.0.0 开始,调用没有回调的异步函数会抛出 TypeError
。 参见 https://github.com/nodejs/node/pull/12562。
DEP0015: fs.readSync
遗留的 String 接口#
类型: 生命周期结束
不推荐使用 fs.readSync()
遗留的 String
接口。 请使用文档中提到的 Buffer
API 代替。
DEP0018: 未处理的 Promise 拒绝#
类型: 生命周期结束
不推荐使用未处理的 Promise 拒绝。 默认情况下,未处理的 Promise 拒绝会终止 Node.js 进程,并返回一个非零退出码。 要更改 Node.js 处理未处理拒绝的方式,请使用 --unhandled-rejections
命令行选项。
DEP0020: Server.connections
#
类型: 生命周期结束
Server.connections
属性在 Node.js v0.9.7 中已被弃用,并且已被删除。 请改用 Server.getConnections()
方法。
DEP0021: Server.listenFD
#
类型: 生命周期结束
Server.listenFD()
方法已被弃用并删除。 请改用 Server.listen({fd: <number>})
。
DEP0023: os.getNetworkInterfaces()
#
类型: 生命周期结束
os.getNetworkInterfaces()
方法已被弃用。 请改用 os.networkInterfaces()
方法。
DEP0024: REPLServer.prototype.convertToContext()
#
类型: 生命周期结束
REPLServer.prototype.convertToContext()
API 已被移除。
DEP0033: EventEmitter.listenerCount()
#
类型: 仅文档
events.listenerCount(emitter, eventName)
API 已弃用。 请改用 emitter.listenerCount(eventName)
。
DEP0034: fs.exists(path, callback)
#
类型: 仅文档
fs.exists(path, callback)
API 已弃用。 请改用 fs.stat()
或 fs.access()
。
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,因此撤销了弃用。
DEP0041: NODE_REPL_HISTORY_FILE
环境变量#
类型: 生命周期结束
NODE_REPL_HISTORY_FILE
环境变量已被移除。 请改用 NODE_REPL_HISTORY
。
DEP0048: util.isError()
#
类型: 生命周期结束
util.isError()
API 已被移除。 请改用 Object.prototype.toString(arg) === '[object Error]' || arg instanceof Error
。
DEP0051: util.isNullOrUndefined()
#
类型: 生命周期结束
util.isNullOrUndefined()
API 已被移除。请使用 arg === null || arg === undefined
代替。
DEP0053: util.isObject()
#
类型: 生命周期结束
util.isObject()
API 已被移除。请使用 arg && typeof arg === 'object'
代替。
DEP0054: util.isPrimitive()
#
类型: 生命周期结束
util.isPrimitive()
API 已被移除。请使用 arg === null || (typeof arg !=='object' && typeof arg !== 'function')
代替。
DEP0059: util.log()
#
类型: 生命周期结束
util.log()
API 已被移除,因为它是一个未维护的旧 API,意外地暴露给了用户领域。相反,请根据您的具体需求考虑以下替代方案
-
第三方日志库
-
使用
console.log(new Date().toLocaleString(), message)
通过采用这些替代方案之一,您可以从 util.log()
过渡,并选择一种符合您应用程序的特定需求和复杂性的日志记录策略。
DEP0060: util._extend()
#
类型:运行时
util._extend()
API 已弃用,因为它是一个未维护的旧 API,意外地暴露给了用户领域。请使用 target = Object.assign(target, source)
代替。
DEP0061: fs.SyncWriteStream
#
类型: 生命周期结束
fs.SyncWriteStream
类从未打算成为公共可访问的 API,并且已被移除。没有可用的替代 API。请使用用户领域的替代方案。
DEP0062: node --debug
#
类型: 生命周期结束
--debug
激活了旧的 V8 调试器接口,该接口已从 V8 5.8 中移除。它已被 Inspector 替换,Inspector 可以使用 --inspect
激活。
DEP0063: ServerResponse.prototype.writeHeader()
#
类型: 仅文档
node: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
#
类型: 生命周期结束
node:repl
模块的 REPL_MODE_MAGIC
常量(用于 replMode
选项)已被移除。自从导入 V8 5.0 的 Node.js 6.0.0 以来,它的行为在功能上与 REPL_MODE_SLOPPY
相同。请使用 REPL_MODE_SLOPPY
代替。
NODE_REPL_MODE
环境变量用于设置交互式 node
会话的底层 replMode
。它的值 magic
也被移除。请使用 sloppy
代替。
DEP0066: OutgoingMessage.prototype._headers, OutgoingMessage.prototype._headerNames
#
类型: 生命周期结束
node:http
模块 OutgoingMessage.prototype._headers
和 OutgoingMessage.prototype._headerNames
属性已弃用。请使用公共方法(例如 OutgoingMessage.prototype.getHeader()
、OutgoingMessage.prototype.getHeaders()
、OutgoingMessage.prototype.getHeaderNames()
、OutgoingMessage.prototype.getRawHeaderNames()
、OutgoingMessage.prototype.hasHeader()
、OutgoingMessage.prototype.removeHeader()
、OutgoingMessage.prototype.setHeader()
)来处理传出标头。
OutgoingMessage.prototype._headers
和 OutgoingMessage.prototype._headerNames
属性从未被记录为正式支持的属性。
DEP0067: OutgoingMessage.prototype._renderHeaders
#
类型: 仅文档
node:http
模块 OutgoingMessage.prototype._renderHeaders()
API 已弃用。
OutgoingMessage.prototype._renderHeaders
属性从未被记录为正式支持的 API。
DEP0068: node debug
#
类型: 生命周期结束
node debug
对应于旧的 CLI 调试器,该调试器已被基于 V8-inspector 的 CLI 调试器取代,可通过 node inspect
获得。
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()
。
DEP0076: tls.parseCertString()
#
类型: 生命周期结束
tls.parseCertString()
是一个简单的解析助手,由于错误而公开了。虽然它应该解析证书主题和颁发者字符串,但它从未正确处理多值相对专有名称。
本文档的早期版本建议使用 querystring.parse()
作为 tls.parseCertString()
的替代方案。但是,querystring.parse()
也不能正确处理所有证书主题,因此不应使用。
DEP0079: 通过 .inspect()
在对象上自定义检查函数#
类型: 生命周期结束
使用名为 inspect
的属性在对象上指定 util.inspect()
的自定义检查函数已弃用。请使用 util.inspect.custom
代替。为了与 Node.js 6.4.0 之前的版本向后兼容,可以同时指定两者。
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.TLSSocket
的 ecdhCurve
选项可以设置为 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()
导入它们的合法用例几乎不存在。
另一方面,node-inspect
可以通过包管理器在本地安装,因为它以相同的名称发布在 npm 注册表中。如果这样做,则无需修改源代码。
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('node:assert')
#
类型:已撤销弃用
不建议直接导入 assert,因为公开的函数使用松散的相等性检查。由于不鼓励使用 node:assert
模块,并且弃用导致开发人员感到困惑,因此已撤销弃用。
DEP0090:无效的 GCM 身份验证标签长度#
类型: 生命周期结束
Node.js 过去支持 OpenSSL 在调用 decipher.setAuthTag()
时接受的所有 GCM 身份验证标签长度。从 Node.js v11.0.0 开始,仅允许使用 128、120、112、104、96、64 和 32 位的身份验证标签。根据 NIST SP 800-38D,其他长度的身份验证标签无效。
DEP0091:crypto.DEFAULT_ENCODING
#
类型: 生命周期结束
crypto.DEFAULT_ENCODING
属性仅用于与 Node.js 0.9.3 之前的版本兼容,现已删除。
DEP0092:绑定到 module.exports
的顶层 this
#
类型: 仅文档
不建议将属性分配给顶层 this
作为 module.exports
的替代方法。开发人员应改用 exports
或 module.exports
。
DEP0094:使用多个参数的 assert.fail()
#
类型:运行时
不建议使用多个参数的 assert.fail()
。请使用只有一个参数的 assert.fail()
或使用不同的 node:assert
模块方法。
DEP0096:timers.unenroll()
#
类型: 生命周期结束
timers.unenroll()
已删除。请改用公开文档的 clearTimeout()
或 clearInterval()
。
DEP0097:带有 domain
属性的 MakeCallback
#
类型:运行时
使用 MakeCallback
添加 domain
属性来携带上下文的用户,应开始使用 MakeCallback
或 CallbackScope
的 async_context
变体,或者高级 AsyncResource
类。
DEP0098:AsyncHooks 嵌入器 AsyncResource.emitBefore
和 AsyncResource.emitAfter
API#
类型: 生命周期结束
AsyncHooks 提供的嵌入式 API 公开了 .emitBefore()
和 .emitAfter()
方法,这些方法很容易被错误地使用,从而可能导致无法恢复的错误。
请改用 asyncResource.runInAsyncScope()
API,该 API 提供了更安全、更方便的替代方案。请参阅 https://github.com/nodejs/node/pull/18513。
DEP0099:异步上下文未知 node::MakeCallback
C++ API#
类型:编译时
提供给本机插件的某些版本的 node::MakeCallback
API 已弃用。请使用接受 async_context
参数的 API 版本。
DEP0102:在 Buffer#(read|write)
操作中使用 noAssert
#
类型: 生命周期结束
使用 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()
分别获取 Cipheriv
和 Decipheriv
对象。
DEP0107:tls.convertNPNProtocols()
#
类型: 生命周期结束
这是一个未记录的帮助器函数,不适用于 Node.js 核心之外的使用,并且由于删除了 NPN(下一协议协商)支持而过时。
DEP0108: zlib.bytesRead
#
类型: 生命周期结束
已弃用的 zlib.bytesWritten
的别名。最初选择这个名称是因为它也可以解释为引擎读取的字节数,但与 Node.js 中其他使用这些名称公开值的流不一致。
DEP0109: http
、https
和 tls
支持无效的 URL#
类型: 生命周期结束
以前支持(但严格来说无效)的一些 URL 通过 http.request()
、http.get()
、https.request()
、https.get()
和 tls.checkServerIdentity()
API 接受,因为它们被旧的 url.parse()
API 接受。 上述 API 现在使用 WHATWG URL 解析器,该解析器要求严格有效的 URL。 传递无效 URL 已被弃用,将来将不再支持。
DEP0111: process.binding()
#
类型:仅限文档(支持 --pending-deprecation
)
process.binding()
仅供 Node.js 内部代码使用。
虽然通常情况下 process.binding()
尚未达到生命周期结束状态,但在启用 权限模型 时,它不可用。
DEP0112: dgram
私有 API#
类型:运行时
node:dgram
模块之前包含几个 API,这些 API 从未打算在 Node.js 核心之外访问:Socket.prototype._handle
、Socket.prototype._receiving
、Socket.prototype._bindState
、Socket.prototype._queue
、Socket.prototype._reuseAddr
、Socket.prototype._healthCheck()
、Socket.prototype._stopReceiving()
和 dgram._createSocketHandle()
。
DEP0113: Cipher.setAuthTag()
、Decipher.getAuthTag()
#
类型: 生命周期结束
Cipher.setAuthTag()
和 Decipher.getAuthTag()
不再可用。 它们从未被记录在文档中,并且在调用时会抛出错误。
DEP0115: crypto.prng()
、crypto.pseudoRandomBytes()
、crypto.rng()
#
类型:仅限文档(支持 --pending-deprecation
)
在最近的 Node.js 版本中,crypto.randomBytes()
和 crypto.pseudoRandomBytes()
之间没有区别。后者与未记录的别名 crypto.prng()
和 crypto.rng()
一起被弃用,以支持 crypto.randomBytes()
,并且可能会在未来的版本中删除。
DEP0116: 遗留 URL API#
类型:已撤销弃用
遗留 URL API 已弃用。 这包括 url.format()
、url.parse()
、url.resolve()
和 遗留 urlObject
。 请改用 WHATWG URL API。
DEP0117: 本机加密句柄#
类型: 生命周期结束
以前版本的 Node.js 通过 Cipher
、Decipher
、DiffieHellman
、DiffieHellmanGroup
、ECDH
、Hash
、Hmac
、Sign
和 Verify
类的 _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 上使用 node:child_process
和 node:cluster
模块。 该函数通常没有用,并且正在被删除。 请参阅此处的讨论:https://github.com/nodejs/node/issues/18391
DEP0126: timers.active()
#
类型: 生命周期结束
之前未记录的 timers.active()
已被删除。 请改用公开记录的 timeout.refresh()
。 如果需要重新引用超时,则自 Node.js 10 以来,可以使用 timeout.ref()
,而不会产生性能影响。
DEP0127: timers._unrefActive()
#
类型: 生命周期结束
之前未记录的“私有”timers._unrefActive()
已被删除。 请改用公开记录的 timeout.refresh()
。 如果需要取消引用超时,则自 Node.js 10 以来,可以使用 timeout.unref()
,而不会产生性能影响。
DEP0128: 具有无效 main
条目和 index.js
文件的模块#
类型:运行时
具有无效 main
条目(例如,./does-not-exist.js
)并且在顶级目录中也有 index.js
文件的模块将解析 index.js
文件。 这已被弃用,并且将在未来的 Node.js 版本中抛出错误。
DEP0129: ChildProcess._channel
#
类型:运行时
由 spawn()
和类似函数返回的子进程对象的 _channel
属性不打算供公众使用。 请改用 ChildProcess.channel
。
DEP0131: 遗留 HTTP 解析器#
类型: 生命周期结束
遗留 HTTP 解析器(在 12.0.0 之前的 Node.js 版本中默认使用)已被弃用,并且已在 v13.0.0 中删除。 在 v13.0.0 之前,可以使用 --http-parser=legacy
命令行标志恢复使用遗留解析器。
DEP0132: 带有回调的 worker.terminate()
#
类型:运行时
将回调传递给 worker.terminate()
已弃用。 请改用返回的 Promise
或监听 worker 的 'exit'
事件。
DEP0133: http
connection
#
类型: 仅文档
与 response.connection
相比,更喜欢 response.socket
,与 request.connection
相比,更喜欢 request.socket
。
DEP0134: process._tickCallback
#
类型:仅限文档(支持 --pending-deprecation
)
process._tickCallback
属性从未被记录为官方支持的 API。
DEP0135: WriteStream.open()
和 ReadStream.open()
是内部的#
类型:运行时
WriteStream.open()
和 ReadStream.open()
是未记录的内部 API,在用户领域中使用没有意义。 文件流应始终通过其相应的工厂方法 fs.createWriteStream()
和 fs.createReadStream()
) 或通过在选项中传递文件描述符来打开。
DEP0136: http
finished
#
类型: 仅文档
response.finished
指示是否已调用 response.end()
,而不是是否已发出 'finish'
并且底层数据已刷新。
请相应地使用 response.writableFinished
或 response.writableEnded
,以避免歧义。
为了保持现有行为,应将 response.finished
替换为 response.writableEnded
。
DEP0137:在垃圾回收时关闭 fs.FileHandle#
类型:运行时
允许在垃圾回收时关闭 fs.FileHandle
对象已被弃用。将来,这样做可能会导致抛出错误,从而终止进程。
请确保在不再需要 fs.FileHandle
时,使用 FileHandle.prototype.close()
显式关闭所有 fs.FileHandle
对象。
const fsPromises = require('node:fs').promises;
async function openAndClose() {
let filehandle;
try {
filehandle = await fsPromises.open('thefile.txt', 'r');
} finally {
if (filehandle !== undefined)
await filehandle.close();
}
}
DEP0138:process.mainModule
#
类型: 仅文档
process.mainModule
是一项仅限 CommonJS 的功能,而 process
全局对象则与非 CommonJS 环境共享。在 ECMAScript 模块中使用它不受支持。
它已被弃用,取而代之的是 require.main
,因为它用途相同,并且仅在 CommonJS 环境中可用。
DEP0139:不带参数的 process.umask()
#
类型: 仅文档
不带参数调用 process.umask()
会导致进程范围的 umask 被写入两次。 这会在线程之间引入竞争条件,并且是一个潜在的安全漏洞。 没有安全、跨平台的替代 API。
DEP0141:repl.inputStream
和 repl.outputStream
#
类型:仅限文档(支持 --pending-deprecation
)
node:repl
模块导出了两次输入和输出流。 使用 .input
代替 .inputStream
和 .output
代替 .outputStream
。
DEP0142:repl._builtinLibs
#
类型:仅限文档(支持 --pending-deprecation
)
node:repl
模块导出一个 _builtinLibs
属性,其中包含一个内置模块数组。 到目前为止,它是不完整的,最好依赖于 require('node:module').builtinModules
。
DEP0144:module.parent
#
类型:仅限文档(支持 --pending-deprecation
)
CommonJS 模块可以使用 module.parent
访问第一个需要它的模块。 此功能已弃用,因为它在 ECMAScript 模块存在的情况下无法一致地工作,并且因为它给出了 CommonJS 模块图的不准确表示。
某些模块使用它来检查它们是否是当前进程的入口点。 建议比较 require.main
和 module
代替
if (require.main === module) {
// Code section that will run only if current file is the entry point.
}
当查找需要当前模块的 CommonJS 模块时,可以使用 require.cache
和 module.children
const moduleParents = Object.values(require.cache)
.filter((m) => m.children.includes(module));
DEP0146:new crypto.Certificate()
#
类型: 仅文档
crypto.Certificate()
构造函数已弃用。 改用 crypto.Certificate()
的静态方法。
DEP0147:fs.rmdir(path, { recursive: true })
#
类型:运行时
在 Node.js 的未来版本中,recursive
选项将被 fs.rmdir
、fs.rmdirSync
和 fs.promises.rmdir
忽略。
改用 fs.rm(path, { recursive: true, force: true })
、fs.rmSync(path, { recursive: true, force: true })
或 fs.promises.rm(path, { recursive: true, force: true })
。
DEP0150:更改 process.config
的值#
类型: 生命周期结束
process.config
属性提供对 Node.js 编译时设置的访问权限。 但是,该属性是可变的,因此容易受到篡改。 在 Node.js 的未来版本中,将删除更改该值的功能。
DEP0151:主索引查找和扩展搜索#
类型:运行时
以前,index.js
和扩展搜索查找将应用于 import 'pkg'
主入口点解析,即使在解析 ES 模块时也是如此。
通过此弃用,所有 ES 模块主入口点解析都需要具有精确文件扩展名的显式 "exports"
或 "main"
条目。
DEP0152:扩展 PerformanceEntry 属性#
类型:运行时
'gc'
、'http2'
和 'http'
<PerformanceEntry> 对象类型分配给它们的附加属性,这些属性提供附加信息。 这些属性现在可在 PerformanceEntry
对象的标准 detail
属性中使用。 现有访问器已被弃用,不应再使用。
DEP0153:dns.lookup
和 dnsPromises.lookup
选项类型强制#
类型: 生命周期结束
对 family
选项使用非空非整数值、对 hints
选项使用非空非数值、对 all
选项使用非空非布尔值或对 verbatim
选项使用非空非布尔值,会导致 dns.lookup()
和 dnsPromises.lookup()
抛出 ERR_INVALID_ARG_TYPE
错误。
DEP0155:模式说明符分辨率中的尾随斜杠#
类型:运行时
对于包 "exports"
和 "imports"
模式解析,不推荐使用重新映射以 "/"
结尾的说明符,例如 import 'pkg/x/'
。
DEP0156:http
中的 .aborted
属性和 'abort'
、'aborted'
事件#
类型: 仅文档
改为使用 <Stream> API,因为 http.ClientRequest
、http.ServerResponse
和 http.IncomingMessage
都是基于流的。 检查 stream.destroyed
而不是 .aborted
属性,并侦听 'close'
而不是 'abort'
、'aborted'
事件。
.aborted
属性和 'abort'
事件仅对检测 .abort()
调用有用。 为了提前关闭请求,使用 Stream .destroy([error])
,然后检查 .destroyed
属性,'close'
事件应该具有相同的效果。 接收端还应检查 readable.readableEnded
值 http.IncomingMessage
上,以了解它是中止还是正常销毁。
DEP0157:流中的 Thenable 支持#
类型: 生命周期结束
Node.js 流的一个未记录的功能是在实现方法中支持 thenable。 现在已弃用此功能,请改用回调并避免对流实现方法使用 async 函数。
此功能导致用户遇到意外问题,即用户以回调样式实现该函数,但使用例如 async 方法,这会导致错误,因为混合 promise 和回调语义是无效的。
const w = new Writable({
async final(callback) {
await someOp();
callback();
},
});
DEP0158:buffer.slice(start, end)
#
类型: 仅文档
此方法已被弃用,因为它与 Uint8Array.prototype.slice()
不兼容,后者是 Buffer
的超类。
改用执行相同操作的 buffer.subarray
。
DEP0161: process._getActiveRequests()
和 process._getActiveHandles()
#
类型: 仅文档
process._getActiveHandles()
和 process._getActiveRequests()
函数不打算供公共使用,并且可能会在未来的版本中移除。
使用 process.getActiveResourcesInfo()
来获取活动资源类型的列表,而不是实际的引用。
DEP0162: fs.write()
、fs.writeFileSync()
强制转换为字符串#
类型: 生命周期结束
隐式强制转换具有自有 toString
属性的对象,这些对象作为第二个参数传递给 fs.write()
、fs.writeFile()
、fs.appendFile()
、fs.writeFileSync()
和 fs.appendFileSync()
已弃用。将它们转换为原始字符串。
DEP0163: channel.subscribe(onMessage)
、channel.unsubscribe(onMessage)
#
类型: 仅文档
这些方法已被弃用,因为它们的使用方式可能无法使通道引用保持足够长时间的活动状态以接收事件。
使用 diagnostics_channel.subscribe(name, onMessage)
或 diagnostics_channel.unsubscribe(name, onMessage)
来代替,它们执行相同的事情。
DEP0164: process.exit(code)
、process.exitCode
强制转换为整数#
类型: 生命周期结束
除了 undefined
、null
、整数数字和整数字符串(例如,'1'
)之外的值,作为 process.exit()
中 code
参数的值和分配给 process.exitCode
的值已被弃用。
DEP0165: --trace-atomics-wait
#
类型: 生命周期结束
--trace-atomics-wait
标志已被移除,因为它使用了 V8 钩子 SetAtomicsWaitCallback
,该钩子将在未来的 V8 版本中移除。
DEP0166: 导入和导出目标中的双斜杠#
类型:运行时
包导入和导出目标映射到包含双斜杠("/" 或 "\")的路径已被弃用,并且在未来的版本中将会因解析验证错误而失败。同样的弃用也适用于以斜杠开头或结尾的模式匹配。
DEP0167: 弱 DiffieHellmanGroup
实例 (modp1
, modp2
, modp5
)#
类型: 仅文档
众所周知的 MODP 组 modp1
、modp2
和 modp5
已被弃用,因为它们无法防御实际攻击。有关详细信息,请参阅 RFC 8247 第 2.4 节。
这些组可能会在未来的 Node.js 版本中移除。依赖这些组的应用程序应该评估改用更强的 MODP 组。
DEP0168: Node-API 回调中的未处理异常#
类型:运行时
现在不建议隐式抑制 Node-API 回调中未捕获的异常。
设置标志 --force-node-api-uncaught-exceptions-policy
以强制 Node.js 在 Node-API 回调中未处理异常时发出 'uncaughtException'
事件。
DEP0169: 不安全的 url.parse()#
类型: 应用程序(仅限非node_modules
代码)
url.parse()
的行为未标准化,容易出错,并且具有安全隐患。请改用 WHATWG URL API。CVE 不会针对 url.parse()
漏洞发布。
DEP0170: 使用 url.parse()
时的无效端口#
类型:运行时
url.parse()
接受带有非数字端口的 URL。此行为可能导致使用意外输入进行主机名欺骗。这些 URL 将在未来版本的 Node.js 中抛出错误,就像 WHATWG URL API 已经做的那样。
DEP0171: 用于 http.IncomingMessage
标头和尾部的 Setter#
类型: 仅文档
在未来版本的 Node.js 中,message.headers
、message.headersDistinct
、message.trailers
和 message.trailersDistinct
将是只读的。
DEP0172: 绑定到 AsyncResource
函数的 asyncResource
属性#
类型:运行时
在未来版本的 Node.js 中,当函数绑定到 AsyncResource
时,将不再添加 asyncResource
属性。
DEP0173: assert.CallTracker
类#
类型:运行时
在未来版本的 Node.js 中,assert.CallTracker
将被移除。考虑使用诸如 mock
辅助函数等替代方案。
DEP0174: 在返回 Promise
的函数上调用 promisify
#
类型:运行时
在返回 Promise
的函数上调用 util.promisify
将忽略该 promise 的结果,这可能导致未处理的 promise 拒绝。
DEP0176: fs.F_OK
, fs.R_OK
, fs.W_OK
, fs.X_OK
#
类型:运行时
直接在 node:fs
上公开的 F_OK
, R_OK
, W_OK
和 X_OK
getters 已被弃用。请从 fs.constants
或 fs.promises.constants
中获取它们。
DEP0177: util.types.isWebAssemblyCompiledModule
#
类型: 生命周期结束
util.types.isWebAssemblyCompiledModule
API 已被移除。请使用 value instanceof WebAssembly.Module
代替。
DEP0179: Hash
构造函数#
类型:运行时
由于 Hash
类是内部类,不打算供公共使用,因此直接使用 Hash()
或 new Hash()
调用它已被弃用。请使用 crypto.createHash()
方法创建 Hash 实例。
DEP0181: Hmac
构造函数#
类型:运行时
由于 Hmac
类是内部类,不打算供公共使用,因此直接使用 Hmac()
或 new Hmac()
调用它已被弃用。请使用 crypto.createHmac()
方法创建 Hmac 实例。
DEP0182: 没有显式 authTagLength
的短 GCM 身份验证标签#
类型:运行时
打算使用比默认身份验证标签长度短的身份验证标签的应用程序必须将 crypto.createDecipheriv()
函数的 authTagLength
选项设置为适当的长度。
对于 GCM 模式下的密码,decipher.setAuthTag()
函数接受任何有效长度的身份验证标签(请参阅 DEP0090)。此行为已被弃用,以便更好地与 NIST SP 800-38D 中的建议保持一致。
DEP0183: 基于 OpenSSL 引擎的 API#
类型: 仅文档
OpenSSL 3 已弃用对自定义引擎的支持,并建议切换到其新的提供程序模型。https.request()
的 clientCertEngine
选项,tls.createSecureContext()
,和 tls.createServer()
; tls.createSecureContext()
的 privateKeyEngine
和 privateKeyIdentifier
; 以及 crypto.setEngine()
都依赖于 OpenSSL 的此功能。
DEP0184: 实例化没有 new
的 node:zlib
类#
类型:运行时
不推荐实例化由 node:zlib
模块导出的没有 new
限定符的类。建议使用 new
限定符代替。这适用于所有 Zlib 类,例如 Deflate
、DeflateRaw
、Gunzip
、Inflate
、InflateRaw
、Unzip
和 Zlib
。
DEP0185: 实例化没有 new
的 node:repl
类#
类型:运行时
不推荐实例化由 node:repl
模块导出的没有 new
限定符的类。建议使用 new
限定符代替。这适用于所有 REPL 类,包括 REPLServer
和 Recoverable
。
DEP0189: process.features.tls_*
#
类型: 仅文档
process.features.tls_alpn
、process.features.tls_ocsp
和 process.features.tls_sni
已被弃用,因为它们的值保证与 process.features.tls
的值相同。
DEP0190: 将 args
传递给带有 shell
选项为 true
的 node:child_process
的 execFile
/spawn
#
类型:运行时
当将 args
数组传递给带有选项 { shell: true }
的 child_process.execFile
或 child_process.spawn
时,这些值不会被转义,只会被空格分隔,这可能会导致 shell 注入。
DEP0191: repl.builtinModules
#
类型:仅限文档(支持 --pending-deprecation
)
node:repl
模块导出一个 builtinModules
属性,其中包含一个内置模块数组。这是不完整的,并且匹配了已经弃用的 repl._builtinLibs
(DEP0142),因此最好依赖于 require('node:module').builtinModules
。