npm install handle-err
yarn add handle-err
- 在app.js里,引入express之前引入
handle-err
- 同时不再需要写
try/catch
了,直接抛出错误(throw new Error()
)就可以了 - 所有页面的错误,都在
app.js
的错误捕获中间件里进行统一处理
示例代码
export const ERROR_TYPE = {
400: 'Bad Request',
401: 'Unauthorized',
403: 'Forbidden',
404: 'Not Found',
500: 'Internal Server Error',
503: 'Service Unavailable',
622: 'Some Custom'
}
// -->
export const THROW_ERROR = (status, info='') => {
throw new Error(`${status}-->${ERROR_TYPE[status]}-->${info}`)
}
const express = require('express')
require('handle-err')
const app = express()
app.use(async (req, res) => {
const user = await getUser()
if (!user) THROW_ERROR(401) //THROW_ERROR(401, 'some info')
})
// 所有页面的错误,都在这里捕获
app.use((err, req, res, next) => {
if(err.message === 'jwt expired'){
res.status(401).send('用户登录过期,请重新登录')
}
if(err.message === ERROR_TYPE[401]) {
res.status(401).send('用户未登录,请先登录')
}
next(err)
})
900
错误码为系统内部发生的错误,非用户定义的。
会将日志保存在根目录的logs/
目录下
npm install handle-err
yarn add handle-err
- In app.js before introducing express, introduce
save error
immediately - At the same time, you don't need to write
try / catch
, just throw a new error by (throw new error()
) - All page errors are in
app.js
In the error capture middleware
code
export const ERROR_TYPE = {
400: 'Bad Request',
401: 'Unauthorized',
403: 'Forbidden',
404: 'Not Found',
500: 'Internal Server Error',
503: 'Service Unavailable',
622: 'Some Custom'
}
// -->
export const THROW_ERROR = (status, info='') => {
throw new Error(`${status}-->${ERROR_TYPE[status]}-->${info}`)
}
const express = require('express')
require('handle-err')
const app = express()
app.use(async (req, res) => {
const user = await getUser()
if (!user) THROW_ERROR(401) //THROW_ERROR(401, 'some info')
})
// All page errors are captured here
app.use((err, req, res, next) => {
if(err.message === 'jwt expired'){
res.status(401).send('User login expired, please login again')
}
if(err.message === ERROR_TYPE[401]) {
res.status(401).send('User not logged in, please log in first')
}
next(err)
})
The 900
error code is an internal error of the system, which is not user-defined.
The log will be saved in the logs/
directory of the root directory