捕获全局错误并保存日志(仅适用于express)
npm install handle-err
yarn add handle-err
-
在app.js里,引入express之后立即引入
handle-err -
同时不再需要写
try/catch了,直接抛出错误(throw new Error())就可以了 -
所有页面的错误都在
app.js的错误捕获中间件里进行统一处理
| 日志类型 | 写法 |
|---|---|
| ALL | throw new Error('some info') |
| INFO | throw new Error('INFO: some info') |
| WARN | throw new Error('WARN: some info') |
| ERROR | throw new Error('ERROR: some info') |
| DEBUG | throw new Error('DEBUG: some info') |
| SOME_NAME | throw new Error('SOME_NAME: some info') |
示例代码
const express = require('express')
require('handle-err')
const app = express()
app.use(async (req, res) => {
const user = await getUser()
if (!user) throw new Error('Unauthorized')
});
// 所有页面的错误,都在这里捕获
app.use((err, req, res, next) => {
if(err.message === 'Unauthorized') {
res.status(401).send(err.message)
}
next(err)
})
保存
会将日志保存在根目录的logs/目录下