如果你的项目中存在catch捕获异常,但是又未把这个异常抛出,导致项目出现问题无法排查
如果你在做前端监控 - promise异常捕获
当前插件通过在try/catch块或者promise.catch插入Promise.reject,把异常抛出
npm i unplugin-catch-throw -D
interface Options {
include?: FilterPattern
exclude?: FilterPattern
}
/*! @ignore_catch_throw */
try {
throw new Error('ignore comment')
}
catch (err) {
// test
}
try {
throw new Error('ignore comment')
}
catch (err) {
/*! @ignore_catch_throw */
}
new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('ignore comment'))
})
}).catch(() => {
/*! @ignore_catch_throw */
})
/*! @ignore_catch_throw-file */
try {
throw new Error('ignore comment')
}
catch (err) {
// test
}
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('p1 rejected'))
})
}).catch(() => {
})
Vite
// vite.config.ts
import CatchThrow from 'unplugin-catch-throw/vite'
export default defineConfig({
plugins: [
CatchThrow({ /* options */ }),
],
})
Example: playground/
Rollup
// rollup.config.js
import CatchThrow from 'unplugin-catch-throw/rollup'
export default {
plugins: [
CatchThrow({ /* options */ }),
],
}
Webpack
// webpack.config.js
module.exports = {
/* ... */
plugins: [
require('unplugin-catch-throw/webpack')({ /* options */ })
]
}
Nuxt
// nuxt.config.js
export default defineNuxtConfig({
modules: [
['unplugin-catch-throw/nuxt', { /* options */ }],
],
})
This module works for both Nuxt 2 and Nuxt Vite
Vue CLI
// vue.config.js
module.exports = {
configureWebpack: {
plugins: [
require('unplugin-catch-throw/webpack')({ /* options */ }),
],
},
}
esbuild
// esbuild.config.js
import { build } from 'esbuild'
import CatchThrow from 'unplugin-catch-throw/esbuild'
build({
plugins: [CatchThrow()],
})