当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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'事件。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。