Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[webpack] 第2039天 在webpack中,怎么做错误上报? #6005

Open
haizhilin2013 opened this issue Nov 13, 2024 · 1 comment
Open

[webpack] 第2039天 在webpack中,怎么做错误上报? #6005

haizhilin2013 opened this issue Nov 13, 2024 · 1 comment
Labels

Comments

@haizhilin2013
Copy link
Collaborator

第2039天 在webpack中,怎么做错误上报?

3+1官网

我也要出题

@Elylicery
Copy link

在使用 Webpack 进行项目构建时,错误上报通常涉及到监听编译过程中的错误,并将这些错误信息发送到一个服务器或日志系统中。可以通过使用 Webpack 的钩子和插件来实现这一功能。

  1. 利用webpack的compiler.hooks 监听事件在构建过程中的多个生命周期钩子上注册自定义函数,例如
const webpack = require('webpack');
const MyWebpackErrorReporter = require('./myErrorReporter'); // 假设这是一个上报错误的模块

module.exports = {
  // 你的其他 Webpack 配置
  plugins: [
    {
      apply: (compiler) => {
        // 监听 `done` 事件(当编译完成时)
        compiler.hooks.done.tap('MyDonePlugin', (stats) => {
          if (stats.hasErrors()) {
            const errors = stats.compilation.errors.map(err => err.message).join('\n');
            MyWebpackErrorReporter.report(errors); // 调用你的错误上报方法
          }
        });
      }
    }
  ]
};

  1. 使用自定义插件plugin上报错误
class ErrorReporterPlugin {
  apply(compiler) {
    compiler.hooks.done.tap('ErrorReporterPlugin', (stats) => {
      if (stats.hasErrors()) {
        const errors = stats.compilation.errors.map(err => err.message).join('\n');
        this.reportErrors(errors); // 上报错误
      }
    });
  }

  reportErrors(errors) {
    // 这里实现错误上报的逻辑,例如发送 HTTP 请求
    console.error(errors); // 输出到控制台
    // 实际上你可能想发送到一个服务器
  }
}

module.exports = {
  // 你的其他 Webpack 配置
  plugins: [
    new ErrorReporterPlugin()
  ]
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants