Nibbling Pastry Monster

    costack

    1.0.2 • Public • Published

    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)
    

    Install

    npm i costack

    DownloadsWeekly Downloads

    4

    Version

    1.0.2

    License

    ISC

    Last publish

    Collaborators

    • cevek