Node.js v21.7.2 文件
- Node.js v21.7.2
-
► 目錄
- 已棄用的 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: 用
worker.exitedAfterDisconnect
取代cluster
worker.suicide
- DEP0008:
require('node:constants')
- DEP0009: 沒有摘要的
crypto.pbkdf2
- DEP0010:
crypto.createCredentials
- DEP0011:
crypto.Credentials
- DEP0012:
Domain.dispose
- DEP0013: 沒有回呼的
fs
非同步函數 - DEP0014:
fs.read
舊版字串介面 - DEP0015:
fs.readSync
舊版字串介面 - 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: 頂層
this
繫結到module.exports
- DEP0093:
crypto.fips
已棄用並替換 - DEP0094: 使用帶有多個參數的
assert.fail()
- DEP0095:
timers.enroll()
- DEP0096:
timers.unenroll()
- DEP0097: 具有
domain
屬性的MakeCallback
- DEP0098:AsyncHooks 嵌入器
AsyncResource.emitBefore
和AsyncResource.emitAfter
API - DEP0099:非 Async 上下文的
node::MakeCallback
C++ API - 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
私有 API - DEP0113:
Cipher.setAuthTag()
、Decipher.getAuthTag()
- DEP0114:
crypto._toBuf()
- DEP0115:
crypto.prng()
、crypto.pseudoRandomBytes()
、crypto.rng()
- DEP0116:舊版 URL API
- DEP0117:原生加密處理
- 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
建構函式
- DEP0001:
- 已棄用的 API
-
► 索引
- 斷言測試
- 非同步背景追蹤
- 非同步掛鉤
- Buffer
- C++ 外掛程式
- 使用 Node-API 的 C/C++ 外掛程式
- C++ 嵌入式 API
- 子程序
- 叢集
- 命令列選項
- 主控台
- Corepack
- Crypto
- 偵錯器
- 已棄用的 API
- 診斷頻道
- DNS
- 網域
- 錯誤
- 事件
- 檔案系統
- 全域變數
- HTTP
- HTTP/2
- HTTPS
- 檢查器
- 國際化
- 模組:CommonJS 模組
- 模組:ECMAScript 模組
- 模組:
node:module
API - 模組:套件
- 網路
- 作業系統
- 路徑
- 效能掛鉤
- 權限
- 程序
- Punycode
- 查詢字串
- Readline
- REPL
- 報告
- 單一可執行應用程式
- 串流
- 字串解碼器
- 測試執行器
- 計時器
- TLS/SSL
- 追蹤事件
- TTY
- UDP/資料報
- URL
- 公用程式
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- 工作執行緒
- 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()
。
DEP0002: require('_linklist')
#
類型:結束生命週期
_linklist
模組已棄用。請使用使用者空間的替代方案。
DEP0003: _writableState.buffer
#
類型:結束生命週期
_writableState.buffer
已移除。請改用 _writableState.getBuffer()
。
DEP0004: CryptoStream.prototype.readyState
#
類型:結束生命週期
CryptoStream.prototype.readyState
屬性已移除。
DEP0005: Buffer()
建構函式#
類型:應用程式(僅限非 node_modules
程式碼)
Buffer()
函式和 new Buffer()
建構函式已棄用,原因是 API 使用性問題,可能導致意外的安全問題。
作為替代方案,請使用下列其中一種方法來建構 Buffer
物件
Buffer.alloc(size[, fill[, encoding]])
:建立一個記憶體已初始化的Buffer
。Buffer.allocUnsafe(size)
:建立一個記憶體未初始化的Buffer
。Buffer.allocUnsafeSlow(size)
:建立一個記憶體未初始化的Buffer
。Buffer.from(array)
:建立一個Buffer
,其中包含array
的副本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: 以 worker.exitedAfterDisconnect
取代 cluster
worker.suicide
#
類型:結束生命週期
在 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
#
類型:結束生命週期
在 Node.js 6.0 中已棄用未指定摘要的 crypto.pbkdf2()
API,因為該方法預設使用不建議的 '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()
。
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
#
類型:結束生命週期
GLOBAL
和 root
別名已在 Node.js 6.0.0 中過時,並已移除。
DEP0017: Intl.v8BreakIterator
#
類型:結束生命週期
Intl.v8BreakIterator
為非標準擴充功能,已移除。請參閱 Intl.Segmenter
。
DEP0018: 未處理的 Promise 拒絕#
類型:結束生命週期
未處理的 Promise 拒絕已棄用。預設情況下,未處理的 Promise 拒絕會以非零退出碼終止 Node.js 程序。若要變更 Node.js 處理未處理拒絕的方式,請使用 --unhandled-rejections
命令列選項。
DEP0019: require('.')
在目錄外部解析#
類型:結束生命週期
在某些情況下,require('.')
可能會在套件目錄外部解析。此行為已移除。
DEP0020: Server.connections
#
類型:結束生命週期
Server.connections
屬性已在 Node.js v0.9.7 中棄用,並已移除。請改用 Server.getConnections()
方法。
DEP0021: Server.listenFD
#
類型:結束生命週期
已棄用並移除 Server.listenFD()
方法。請改用 Server.listen({fd: <number>})
。
DEP0022: os.tmpDir()
#
類型:結束生命週期
os.tmpDir()
API 已在 Node.js 7.0.0 中棄用,並已移除。請改用 os.tmpdir()
。
DEP0023: os.getNetworkInterfaces()
#
類型:結束生命週期
os.getNetworkInterfaces()
方法已棄用。請改用 os.networkInterfaces()
方法。
DEP0024: REPLServer.prototype.convertToContext()
#
類型:結束生命週期
REPLServer.prototype.convertToContext()
API 已移除。
DEP0025: require('node:sys')
#
類型:執行時間
node: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:node:domain
模組#
類型:僅文件
domain
模組已棄用,不應使用。
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()
。
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:node: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 中移除。它已被 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
選項,已移除。自從 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
#
類型:執行時間
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()
。
DEP0075: REPLServer.parseREPLKeyword()
#
類型:結束生命週期
REPLServer.parseREPLKeyword()
已從 userland 可見性中移除。
DEP0076: tls.parseCertString()
#
類型:結束生命週期
tls.parseCertString()
是一個微不足道的解析輔助程式,因錯誤而公開。雖然它應該解析憑證主體和發行者字串,但它從未正確處理多值相對識別名稱。
本文件的早期版本建議使用 querystring.parse()
作為 tls.parseCertString()
的替代方案。然而,querystring.parse()
也不正確地處理所有憑證主體,不應使用。
DEP0077:Module._debug()
#
類型:執行時間
Module._debug()
已棄用。
Module._debug()
函式從未被記錄為官方支援的 API。
DEP0078:REPLServer.turnOffEditorMode()
#
類型:結束生命週期
REPLServer.turnOffEditorMode()
已從使用者端可見性中移除。
DEP0079:透過 .inspect()
對物件進行自訂檢查函式#
類型:結束生命週期
在物件上使用名為 inspect
的屬性來指定 util.inspect()
的自訂檢查函式已棄用。改用 util.inspect.custom
。為了與 6.4.0 版之前的 Node.js 向後相容,可以同時指定這兩個選項。
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 用於支援所有在呼叫 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
屬性僅存在於與 0.9.3 版本以前的 Node.js 版本相容,且已移除。
DEP0092:頂層 this
與 module.exports
繫結#
類型:僅文件
將屬性指定給頂層 this
作為 module.exports
的替代方案已不建議使用。開發人員應改用 exports
或 module.exports
。
DEP0093:crypto.fips
已不建議使用且已取代#
類型:僅文件
crypto.fips
屬性已不建議使用。請改用 crypto.setFips()
和 crypto.getFips()
。
DEP0094:使用 assert.fail()
搭配多個引數#
類型:執行時間
使用 assert.fail()
搭配多個引數已不建議使用。請僅使用一個引數搭配 assert.fail()
,或使用不同的 node:assert
模組方法。
DEP0095: timers.enroll()
#
類型:執行時間
timers.enroll()
已棄用。請改用公開記錄的 setTimeout()
或 setInterval()
。
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,它提供更安全、更方便的替代方案。請參閱 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
參數不再具有任何功能。無論 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()
來取得 Cipher
和 Decipher
物件。
DEP0107:tls.convertNPNProtocols()
#
類型:結束生命週期
這是一個未記載於文件中的輔助函數,不打算在 Node.js 核心之外使用,而且已因移除 NPN(下一個協定協商)支援而過時。
DEP0108: zlib.bytesRead
#
類型:執行時間
已棄用的別名,用於 zlib.bytesWritten
。選擇此原始名稱是因為它也可以合理地將值解釋為引擎讀取的位元組數,但與 Node.js 中以這些名稱公開值的其它串流不一致。
DEP0109: http
、https
和 tls
支援無效的 URL#
類型:結束生命週期
由於舊版的 url.parse()
API 接受這些 URL,因此先前支援的某些(但嚴格來說無效的)URL 會透過 http.request()
、http.get()
、https.request()
、https.get()
和 tls.checkServerIdentity()
API 接受。已提及的 API 現在使用需要嚴格有效 URL 的 WHATWG URL 剖析器。傳遞無效的 URL 已遭棄用,且未來將移除支援。
DEP0110: vm.Script
快取資料#
類型:僅文件
produceCachedData
選項已遭棄用。請改用 script.createCachedData()
。
DEP0111: process.binding()
#
類型:僅限文件記載(支援 --pending-deprecation
)
process.binding()
僅供 Node.js 內部程式碼使用。
雖然 process.binding()
通常尚未達到生命週期結束狀態,但啟用 政策 或 權限模型 時將無法使用。
DEP0112: dgram
私有 API#
類型:執行時間
node:dgram
模組以前包含數個從未打算在 Node.js 核心外部存取的 API: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()
已不再可用。它們從未被記錄,且在呼叫時會擲回錯誤。
DEP0114:crypto._toBuf()
#
類型:結束生命週期
crypto._toBuf()
函數並非設計為供 Node.js 核心以外的模組使用,且已移除。
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 效能計數器支援#
類型:結束生命週期
已從 Node.js 中移除 Windows 效能計數器支援。未記錄的 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
DEP0122:tls
Server.prototype.setOptions()
#
類型:執行時間
請改用 Server.prototype.setSecureContext()
。
DEP0123:將 TLS ServerName 設為 IP 位址#
類型:執行時間
根據 RFC 6066,不允許將 TLS ServerName 設為 IP 位址。此設定將在未來版本中被忽略。
DEP0124:使用 REPLServer.rli
#
類型:結束生命週期
此屬性是對實例本身的參考。
DEP0125:require('node:_stream_wrap')
#
類型:執行時間
node:_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:具有無效 main
項目和 index.js
檔案的模組#
類型:執行時間
具有無效 main
項目(例如 ./does-not-exist.js
)且在頂層目錄中也有 index.js
檔案的模組將會解析 index.js
檔案。此設定已棄用,且將在未來的 Node.js 版本中引發錯誤。
DEP0129:ChildProcess._channel
#
類型:執行時間
spawn()
和類似函數傳回的子處理物件的 _channel
屬性不打算供公開使用。請改用 ChildProcess.channel
。
DEP0130:Module.createRequireFromPath()
#
類型:結束生命週期
DEP0131:傳統 HTTP 剖析器#
類型:結束生命週期
在 Node.js 12.0.0 之前的版本中預設使用的傳統 HTTP 剖析器已標示為不建議使用,並已在 v13.0.0 中移除。在 v13.0.0 之前,可以使用 --http-parser=legacy
命令列旗標來改回使用傳統剖析器。
DEP0132:帶有回呼的 worker.terminate()
#
類型:執行時間
傳遞回呼給 worker.terminate()
已標示為不建議使用。請改用傳回的 Promise
,或使用工作執行緒的 'exit'
事件的監聽器。
DEP0133:http
connection
#
類型:僅文件
優先使用 response.socket
而非 response.connection
,以及 request.socket
而非 request.connection
。
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。
DEP0140:使用 request.destroy()
取代 request.abort()
#
類型:僅文件
使用 request.destroy()
取代 request.abort()
。
DEP0141:repl.inputStream
和 repl.outputStream
#
類型:僅限文件記載(支援 --pending-deprecation
)
node:repl
模組匯出輸入和輸出串流兩次。使用 .input
取代 .inputStream
,並使用 .output
取代 .outputStream
。
DEP0142:repl._builtinLibs
#
類型:僅文件
node:repl
模組匯出一個 _builtinLibs
屬性,其中包含內建模組的陣列。它到目前為止並不完整,因此最好依賴 require('node:module').builtinModules
。
DEP0143:Transform._transformState
#
類型:執行時期 Transform._transformState
將在未來版本中移除,因為實作簡化後不再需要它。
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));
DEP0145:socket.bufferSize
#
類型:僅文件
socket.bufferSize
只是 writable.writableLength
的別名。
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 })
。
DEP0148:"exports"
中的資料夾對應(尾隨 "/"
)#
類型:執行時間
在 子路徑匯出 或 子路徑匯入 欄位中使用尾隨 "/"
來定義子路徑資料夾對應已棄用。請改用 子路徑模式。
DEP0149:http.IncomingMessage#connection
#
類型:僅限文件。
優先使用 message.socket
而非 message.connection
。
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
選項類型強制轉換#
類型:結束生命週期
在 dns.lookup()
和 dnsPromises.lookup()
中,對 family
選項使用非空值非整數值、對 hints
選項使用非空值非數字值、對 all
選項使用非空值非布林值,或對 verbatim
選項使用非空值非布林值,會擲回 ERR_INVALID_ARG_TYPE
錯誤。
DEP0154:RSA-PSS 產生金鑰對選項#
類型:執行時間
'hash'
和 'mgf1Hash'
選項已替換為 'hashAlgorithm'
和 'mgf1HashAlgorithm'
。
DEP0155:範本指定符解析中的尾斜線#
類型:執行時間
以 "/"
結尾的指定符重新對應,例如 import 'pkg/x/'
已不建議用於套件 "exports"
和 "imports"
範本解析。
DEP0156:.aborted
屬性和 'abort'
、'aborted'
事件在 http
中#
類型:僅文件
改為使用 <Stream> API,因為 http.ClientRequest
、http.ServerResponse
和 http.IncomingMessage
都是基於串流的。檢查 stream.destroyed
,而不是 .aborted
屬性,並偵聽 'close'
,而不是 'abort'
、'aborted'
事件。
.aborted
屬性和 'abort'
事件僅適用於偵測 .abort()
呼叫。若要提早關閉請求,請使用串流 .destroy([error])
,然後檢查 .destroyed
屬性,而 'close'
事件應具有相同的效果。接收端也應檢查 http.IncomingMessage
上的 readable.readableEnded
值,以取得是否為中止或正常中斷。
DEP0157:串流中的 Thenable 支援#
類型:結束生命週期
Node.js 串流的一項未記錄功能是在實作方法中支援 thenable。這項功能現已棄用,請改用 callback,並避免在串流實作方法中使用非同步函式。
這項功能會讓使用者遇到意外問題,例如使用者以 callback 樣式實作函式,但使用非同步方法,這會導致錯誤,因為混合 promise 和 callback 語意是不被允許的。
const w = new Writable({
async final(callback) {
await someOp();
callback();
},
});
DEP0158:buffer.slice(start, end)
#
類型:僅文件
此方法已棄用,因為它與 Uint8Array.prototype.slice()
不相容,而後者是 Buffer
的超類別。
請改用 buffer.subarray
,它具有相同功能。
DEP0159:ERR_INVALID_CALLBACK
#
類型:結束生命週期
此錯誤碼已移除,因為它增加了用於驗證值類型的錯誤的混淆。
DEP0160:process.on('multipleResolves', handler)
#
類型:執行時期。
此事件已棄用,因為它無法與 V8 promise 組合器搭配使用,這降低了它的實用性。
DEP0161:process._getActiveRequests()
和 process._getActiveHandles()
#
類型:僅文件
process._getActiveHandles()
和 process._getActiveRequests()
函式並非供公開使用,且可能會在未來版本中移除。
請使用 process.getActiveResourcesInfo()
來取得活躍資源類型的清單,而非實際的參照。
DEP0162:fs.write()
、fs.writeFileSync()
轉換為字串#
類型:結束生命週期
在 fs.write()
、fs.writeFile()
、fs.appendFile()
、fs.writeFileSync()
和 fs.appendFileSync()
中,將具有自訂 toString
屬性的物件作為第二個參數傳遞的隱式轉換已遭棄用。請將它們轉換為原始字串。
DEP0163:channel.subscribe(onMessage)
、channel.unsubscribe(onMessage)
#
類型:僅文件
這些方法已遭棄用,因為它們的使用方式可能無法讓頻道參照保持運作足夠長的時間來接收事件。
請改用 diagnostics_channel.subscribe(name, onMessage)
或 diagnostics_channel.unsubscribe(name, onMessage)
,功能相同。
DEP0164:process.exit(code)
、process.exitCode
轉換為整數#
類型:結束生命週期
在 process.exit()
的 code
參數中,以及指定給 process.exitCode
的值,已棄用 undefined
、null
、整數數字和整數字串(例如 '1'
)以外的值。
DEP0165:--trace-atomics-wait
#
類型:僅文件
已棄用 --trace-atomics-wait
旗標。
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()#
類型:僅限文件記載(支援 --pending-deprecation
)
url.parse()
行為未標準化,且容易發生具有安全性影響的錯誤。請改用 WHATWG URL API。url.parse()
漏洞不會發布 CVE。
DEP0170:使用 url.parse()
時的無效埠#
類型:執行時間
url.parse()
接受埠號不是數字的 URL。這種行為可能會導致主機名稱欺騙,並出現意外輸入。這些 URL 會在未來版本的 Node.js 中擲回錯誤,因為 WHATWG URL API 已經會這樣做。
DEP0171:http.IncomingMessage
標頭和預告的設定器#
類型:僅文件
在未來版本的 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
#
類型:執行時間
對傳回 util.promisify
會忽略該 promise 的結果,這可能會導致未處理的 promise 拒絕。
DEP0175:util.toUSVString
#
類型:僅文件
已棄用 util.toUSVString()
API。請改用 String.prototype.toWellFormed
。
DEP0176:fs.F_OK
、fs.R_OK
、fs.W_OK
、fs.X_OK
#
類型:僅文件
直接在 node:fs
上公開的 F_OK
、R_OK
、W_OK
和 X_OK
getter 已棄用。請改從 fs.constants
或 fs.promises.constants
取得。
DEP0177:util.types.isWebAssemblyCompiledModule
#
類型:結束生命週期
util.types.isWebAssemblyCompiledModule
API 已移除。請改用 value instanceof WebAssembly.Module
。
DEP0178:dirent.path
#
類型:僅文件
dirent.path
已棄用,因為它在各個發行版本之間缺乏一致性。請改用 dirent.parentPath
。
DEP0179:Hash
建構函式#
類型:僅文件
直接使用 Hash()
或 new Hash()
呼叫 Hash
類別已棄用,因為它們是內部函式,不打算公開使用。請使用 crypto.createHash()
方法來建立 Hash 實例。