Error trace for thinkjs 3.x
npm install think-trace![npm]()
![Travis]()
![Coveralls]()
![David]()
think-trace is an error handler for ThinkJS 3.x and koa2. It provides a pretty error web interface that helps you debug your web project.

```
npm install think-trace
`js`
const traceMiddleware = require('think-trace');
app.use(traceMiddleware({
sourceMap: false,
error: err => console.error(err)
}));
Modify src/config/middleware.js:
`js
const trace = require('think-trace');
module.exports = [
{
handle: trace,
options: {
sourceMap: false,
error(err, ctx) {
return console.error(err);
}
}
}
];
`
- sourceMap: Whether your project has source map support, default is true.debug
- : Whether show error detail in web, default is true. ctxLineNumbers
- : How long you want show error line context, default is 10.contentType
- : Due to think-trace can't get content-type while application throw error, you should set content type by yourself by this parameter. Default value is ctx => 'html';. You can set json content type like this:`
jsX-Requested-With: XMLHttpRequest
{
contentType(ctx) {
// All request url starts of /api or request header contains will output json error`
const APIRequest = /^\/api/.test(ctx.request.path);
const AJAXRequest = ctx.is('X-Requested-With', 'XMLHttpRequest');
return APIRequest || AJAXRequest ? 'json' : 'html';
}
}
error
- : callback function when catch error, it receives Error object and ctx as parameter.templates
- : error status template path, if you want to specific. You can set templates as a path string, then module will read all status file named like 404.html, 502.html as your customed status page. Or you can set templates as an object, for example:`
js
{
options: {
//basic set as string, then put 404.html, 500.html into error folder
templates: path.join(__dirname, 'error'),
//customed set as object
templates: {
404: path.join(__dirname, 'error/404.html'),
500: path.join(__dirname, 'error/500.html'),
502: path.join(__dirname, 'error/502.html')
}
}
}
``
Also you can set templates as function, function should return error template file path or error template file path object.
Contributions welcome!