Skip to content

Handle global errors and save logs (express only)

Notifications You must be signed in to change notification settings

zomem/handle-err

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简体中文

全局捕获错误并保存日志(仅适用于express)

npm install handle-err
yarn add handle-err

  1. 在app.js里,引入express之前引入handle-err
  2. 同时不再需要写try/catch了,直接抛出错误(throw new Error())就可以了
  3. 所有页面的错误,都在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/目录下
image.png

English

Handle global errors and save logs (express only)

npm install handle-err
yarn add handle-err

  1. In app.js before introducing express, introduce save error immediately
  2. At the same time, you don't need to write try / catch, just throw a new error by (throw new error())
  3. 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)
})

Saved

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
image.png

About

Handle global errors and save logs (express only)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published