costack
v1.0.2
Published
costack gives you full stacktrace errors on promise based apps
Downloads
2
Maintainers
Readme
costack
What is it?
If you use co
or koa
you have a lot of code places where you call async functions with yield
yield sequelize.query('SELECT ...');
yield fs.readFileAsync('/foo/bar')
and if that function fails you will get incorrect error stacktrace like
{ Error: ENOENT: no such file or directory, open 'foo/bar'
at Error (native) errno: -2, code: 'ENOENT', syscall: 'open', path: 'foo/bar' }
and you really don't know where it is happen.
Costack gives you full error stacktrace
Install
npm i costack
How to use
just require costack to global.Promise
in top of your app
global.Promise = require('costack');
Example
"use strict";
global.Promise = require('costack');
const co = require('co');
function dbQuery(sql) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('Incorrect sql query'));
}, 100);
});
}
function* find(params) {
return yield dbQuery('SELECT * FROM table', params);
}
function* findById(id) {
return yield* find({id: id});
}
co(function *() {
const res = yield* findById(1);
}).catch(err => console.error(err));
Stacktrace without costack
Error: Incorrect sql query
at Timeout.setTimeout (~/Dev/costack/examples/db.js:11:20)
With costack
Error: Incorrect sql query
at Timeout.setTimeout (~/Dev/costack/examples/db.js:11:20)
----------------
at dbQuery (~/Dev/costack/examples/db.js:9:12)
at find (~/Dev/costack/examples/db.js:17:18)
at findById (~/Dev/costack/examples/db.js:22:19)
at ~/Dev/costack/examples/db.js:27:24
----------------
at Object.<anonymous> (~/Dev/costack/examples/db.js:26:1)