阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js process.emitWarning

      process.emitWarning(warning[, options])

      新增于: 8.0.0

      • warning < string> | < Error> 发出的警告。
      • options < Object>
        • type < string> 如果 warning 是String, type 是警告类型的名字。 默认值: Warning。
        • code < string> 当前警告的唯一标识符。
        • ctor < Function> 如果warning是String, ctor是可选的function,用于限制生成的堆栈信息。默认process.emitWarning
        • detail < string> error的附加信息。

      process.emitWarning()方法可用于发出定制的或应用特定的进程警告。 可以通过给process.on(‘warning’)事件增加处理器,监听这些警告。

      // Emit a warning with a code and additional detail.
      process.emitWarning('Something happened!', {
        code: 'MY_WARNING',
        detail: 'This is some additional information'
      });
      // Emits:
      // (node:56338) [MY_WARNING] Warning: Something happened!
      // This is some additional information
      

      在上面例子中, process.emitWarning()内部生成了一个Error对象,并传递给process.on(‘warning’)事件。

      process.on('warning', (warning) => {
        console.warn(warning.name);    // 'Warning'
        console.warn(warning.message); // 'Something happened!'
        console.warn(warning.code);    // 'MY_WARNING'
        console.warn(warning.stack);   // Stack trace
        console.warn(warning.detail);  // 'This is some additional information'
      });
      
      

      如果warning参数值是一个Error对象, options参数项都会被忽略。

      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是可选的function,用于限制生成的堆栈信息。默认process.emitWarning

      process.emitWarning()方法可用于发出定制的或应用特定的进程警告。 可以通过给process.on(‘warning’)事件增加处理器,监听这些警告。

      // Emit a warning using a string.
      process.emitWarning('Something happened!');
      // Emits: (node: 56338) Warning: Something happened!
      
      // Emit a warning using a string and a type.
      process.emitWarning('Something Happened!', 'CustomWarning');
      // Emits: (node:56338) CustomWarning: Something Happened!
      
      process.emitWarning('Something happened!', 'CustomWarning', 'WARN001');
      // Emits: (node:56338) [WARN001] CustomWarning: Something happened!
      

      在上面例子中, process.emitWarning()内部生成了一个Error对象,并传递给process.on(‘warning’)事件。

      process.on('warning', (warning) => {
        console.warn(warning.name);
        console.warn(warning.message);
        console.warn(warning.code);
        console.warn(warning.stack);
      });
      

      如果warning参数值是一个Error对象,它会被透传给process.on(‘warning’)的事件监听器(可选参数值type, code and ctor会被忽略):

      // 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';
      
      process.emitWarning(myWarning);
      // Emits: (node:56338) [WARN001] CustomWarning: Something happened!
      

      如果warning的参数值不是string或Error,会抛出 TypeError。

      需要注意的是,使用Error对象做为进程警告,并不是常用的错误处理机制的替代方式。

      如果警告type是DeprecationWarning,会涉及如下额外的处理:

      • 如果命令行标识包含–throw-deprecation,deprecation warning会作为异常抛出,而不是作为事件被发出。
      • 如果命令行标识包含–no-deprecation,deprecation warning会被忽略。
      • 如果命令行标识包含–trace-deprecation,deprecation warning及其全部堆栈信息会被打印到stderr。

      更多内容请参考:Node.js process 进程,或者通过 点击对应菜单 进行查看;


      目录
      目录