process.emitWarning(warning[, type[, code]][, ctor])
添加於:v6.0.0
參數
warning
<string> | <Error> 要發出的警告。type
<string>什麽時候warning
是一個String
,type
是用於類型發出警告。默認:'Warning'
.code
<string> 發出的警告實例的唯一標識符。ctor
<Function> 當warning
是String
時,ctor
是一個可選函數,用於限製生成的堆棧跟蹤。 默認:process.emitWarning
。
process.emitWarning()
方法可用於發出自定義或應用程序特定的進程警告。可以通過向
事件添加處理程序來監聽這些。'warning'
import { emitWarning } from 'node:process'; // Emit a warning using a string. emitWarning('Something happened!'); // Emits: (node: 56338) Warning: Something happened!
const { emitWarning } = require('node:process'); // Emit a warning using a string. emitWarning('Something happened!'); // Emits: (node: 56338) Warning: Something happened!
import { emitWarning } from 'node:process'; // Emit a warning using a string and a type. emitWarning('Something Happened!', 'CustomWarning'); // Emits: (node:56338) CustomWarning: Something Happened!
const { emitWarning } = require('node:process'); // Emit a warning using a string and a type. emitWarning('Something Happened!', 'CustomWarning'); // Emits: (node:56338) CustomWarning: Something Happened!
import { emitWarning } from 'node:process'; emitWarning('Something happened!', 'CustomWarning', 'WARN001'); // Emits: (node:56338) [WARN001] CustomWarning: Something happened!
const { emitWarning } = require('node:process'); process.emitWarning('Something happened!', 'CustomWarning', 'WARN001'); // Emits: (node:56338) [WARN001] CustomWarning: Something happened!
在前麵的每個示例中,Error
對象由 process.emitWarning()
在內部生成並傳遞給
處理程序。'warning'
import process from 'node:process'; process.on('warning', (warning) => { console.warn(warning.name); console.warn(warning.message); console.warn(warning.code); console.warn(warning.stack); });
const process = require('node:process'); process.on('warning', (warning) => { console.warn(warning.name); console.warn(warning.message); console.warn(warning.code); console.warn(warning.stack); });
如果 warning
作為 Error
對象傳遞,它將未經修改地傳遞給 'warning'
事件處理程序(並且可選的 type
、 code
和 ctor
參數將被忽略):
import { emitWarning } from 'node:process'; // Emit a warning using an Error object. const myWarning = new Error('Something happened!'); // Use the Error name property to specify the type name myWarning.name = 'CustomWarning'; myWarning.code = 'WARN001'; emitWarning(myWarning); // Emits: (node:56338) [WARN001] CustomWarning: Something happened!
const { emitWarning } = require('node:process'); // Emit a warning using an Error object. const myWarning = new Error('Something happened!'); // Use the Error name property to specify the type name myWarning.name = 'CustomWarning'; myWarning.code = 'WARN001'; emitWarning(myWarning); // Emits: (node:56338) [WARN001] CustomWarning: Something happened!
如果 warning
不是字符串或 Error
對象,則會引發 TypeError
。
雖然進程警告使用Error
對象,但進程警告機製不能替代正常的錯誤處理機製。
如果警告 type
是 'DeprecationWarning'
,則執行以下附加處理:
- 如果使用
--throw-deprecation
命令行 標誌,則棄用警告將作為異常拋出,而不是作為事件發出。 - 如果使用
--no-deprecation
命令行 標誌,則會抑製棄用警告。 - 如果使用
--trace-deprecation
命令行 標誌,則會將棄用警告與完整堆棧跟蹤一起打印到stderr
。
避免重複警告#
作為最佳實踐,每個進程隻應發出一次警告。為此,請將emitWarning()
放在布爾值後麵。
import { emitWarning } from 'node:process'; function emitMyWarning() { if (!emitMyWarning.warned) { emitMyWarning.warned = true; emitWarning('Only warn once!'); } } emitMyWarning(); // Emits: (node: 56339) Warning: Only warn once! emitMyWarning(); // Emits nothing
const { emitWarning } = require('node:process'); function emitMyWarning() { if (!emitMyWarning.warned) { emitMyWarning.warned = true; emitWarning('Only warn once!'); } } emitMyWarning(); // Emits: (node: 56339) Warning: Only warn once! emitMyWarning(); // Emits nothing
相關用法
- Node.js process.emitWarning(warning[, options])用法及代碼示例
- Node.js process.emitWarning()用法及代碼示例
- Node.js process.execPath用法及代碼示例
- Node.js process.execArgv用法及代碼示例
- Node.js process.env用法及代碼示例
- Node.js process.env()用法及代碼示例
- Node.js process.exitCode用法及代碼示例
- Node.js process.exit([code])用法及代碼示例
- Node.js process.exit()用法及代碼示例
- Node.js process.stdin用法及代碼示例
- Node.js process.arch()用法及代碼示例
- Node.js process.nextTick(callback[, ...args])用法及代碼示例
- Node.js process.noDeprecation用法及代碼示例
- Node.js process.setUncaughtExceptionCaptureCallback()用法及代碼示例
- Node.js process.getgid()用法及代碼示例
- Node.js process.setgid(id)用法及代碼示例
- Node.js process.chdir(directory)用法及代碼示例
- Node.js process.setgid()用法及代碼示例
- Node.js process.getuid()用法及代碼示例
- Node.js process.ppid用法及代碼示例
- Node.js process.report.reportOnSignal用法及代碼示例
- Node.js process.report.directory用法及代碼示例
- Node.js process.umask(mask)用法及代碼示例
- Node.js process.setgroups(groups)用法及代碼示例
- Node.js process.setegid(id)用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 process.emitWarning(warning[, type[, code]][, ctor])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。