當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js proces 'warning'事件用法及代碼示例


事件:'warning'

添加於:v6.0.0

參數
  • warning <Error>警告的關鍵屬性是:
    • name <string> 警告的名稱。 默認: 'Warning'
    • message <string> A system-provided 對警告的說明。
    • stack <string> 到代碼中發出警告的位置的堆棧跟蹤。

每當 Node.js 發出進程警告時,都會發出 'warning' 事件。

進程警告類似於錯誤,因為它說明了引起用戶注意的異常情況。但是,警告不是正常 Node.js 和 JavaScript 錯誤處理流程的一部分。每當檢測到可能導致sub-optimal 應用程序性能、錯誤或安全漏洞的不良編碼實踐時,Node.js 都會發出警告。

import process from 'node:process';

process.on('warning', (warning) => {
  console.warn(warning.name);    // Print the warning name
  console.warn(warning.message); // Print the warning message
  console.warn(warning.stack);   // Print the stack trace
});const process = require('node:process');

process.on('warning', (warning) => {
  console.warn(warning.name);    // Print the warning name
  console.warn(warning.message); // Print the warning message
  console.warn(warning.stack);   // Print the stack trace
});

默認情況下,Node.js 會將進程警告打印到 stderr--no-warnings 命令行 選項可用於抑製默認控製台輸出,但 'warning' 事件仍將由 process 對象發出。

以下示例說明了在向事件添加了太多偵聽器時打印到 stderr 的警告:

$ node
> events.defaultMaxListeners = 1;
> process.on('foo', () => {});
> process.on('foo', () => {});
> (node:38638) MaxListenersExceededWarning: Possible EventEmitter memory leak
detected. 2 foo listeners added. Use emitter.setMaxListeners() to increase limit

相比之下,以下示例關閉默認警告輸出並將自定義處理程序添加到 'warning' 事件:

$ node --no-warnings
> const p = process.on('warning', (warning) => console.warn('Do not do that!'));
> events.defaultMaxListeners = 1;
> process.on('foo', () => {});
> process.on('foo', () => {});
> Do not do that!

--trace-warnings 命令行 選項可用於使警告的默認控製台輸出包括警告的完整堆棧跟蹤。

使用 --throw-deprecation 命令行 標誌啟動 Node.js 將導致自定義棄用警告作為異常拋出。

使用 --trace-deprecation 命令行 標誌將導致自定義棄用與堆棧跟蹤一起打印到 stderr

使用 --no-deprecation 命令行 標誌將禁止報告自定義棄用。

*-deprecation 命令行 標誌僅影響使用名稱 'DeprecationWarning' 的警告。

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品  'warning'事件。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。