Allow customizing the default egg-onerror's definition of isProd (线上 !== 生产)
egg 项目本地跑起来后,如果有报错,会展示非常详细的错误堆栈。但是一旦发布到线上,就只会显示一个出错了,但是具体信息被隐藏了。
原因是 egg
默认的错误处理插件 egg-onerror
只对 app.env
为 local
或者 unittest
的情况展示详细信息,其他环境都被认为是生产环境,所以隐藏了错误堆栈。(了解更多)
我认为,生产环境的确应该隐藏详细错误信息,要查问题应该看日志。但是并不是所有线上环境都为生产环境,应当允许开发者打开"展示详细错误"选项。所以开发这个插件来完成这件事情。
对这种报错信息,你是不是感到无话可说?本插件会将非 Error 类型的错误,用 util.inspect
将详情打印出来:
本来的报错 | 本插件的改进 |
---|---|
![]() |
![]() |
- 允许自定义 isProd 函数,用来确定当前 app 是否是生产环境。
$ npm i egg-error-display --save
- Enable it on plugin configuration:
// {app_root}/config/plugin.[t|j]s
exports.onError = {
enable: true,
package: "egg-error-display"
};
- 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.
Please open an issue here.
npm run test-local