Skip to content

Allow customize the default egg-onerror's definition of isProd (线上 !== 生产)

License

Notifications You must be signed in to change notification settings

Jeff-Tian/egg-error-display

Repository files navigation

egg-error-display

Allow customizing the default egg-onerror's definition of isProd (线上 !== 生产)

NPM version Build Status Build Status Build status codecov David deps Known Vulnerabilities npm download

Quality gate

Why

线上 !== 生产

egg 项目本地跑起来后,如果有报错,会展示非常详细的错误堆栈。但是一旦发布到线上,就只会显示一个出错了,但是具体信息被隐藏了。

原因是 egg 默认的错误处理插件 egg-onerror 只对 app.envlocal 或者 unittest 的情况展示详细信息,其他环境都被认为是生产环境,所以隐藏了错误堆栈。(了解更多

我认为,生产环境的确应该隐藏详细错误信息,要查问题应该看日志。但是并不是所有线上环境都为生产环境,应当允许开发者打开"展示详细错误"选项。所以开发这个插件来完成这件事情。

non-error thrown: [object Object]

对这种报错信息,你是不是感到无话可说?本插件会将非 Error 类型的错误,用 util.inspect 将详情打印出来:

本来的报错 本插件的改进

Functionality

  • 允许自定义 isProd 函数,用来确定当前 app 是否是生产环境。

Install

$ npm i egg-error-display --save

Usage

  1. Enable it on plugin configuration:
// {app_root}/config/plugin.[t|j]s
exports.onError = {
  enable: true,
  package: "egg-error-display"
};
  1. Configure the isProd function:
// {app_root}/config/config.default.[t|j]s
exports.onError = {
    isProd: (app: Application) => app.env === 'prod'
};

see config/config.default.ts for more detail.

Questions & Suggestions

Please open an issue here.

License

MIT

Test

npm run test-local

Release Notes: