2017-08-25 6 views
0

Je marionnettiste (cela pourrait-il être un verbe?) Une application construite avec webpack et page.on('error') je reçois des erreurs comme celle-ci:Sourcemaps chez marionnettiste?

TypeError: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a.map is not a function 
    at _default.<anonymous> (....../app.js:23858:89) 
    at Generator.next (<anonymous>) 
    at step (....../app.js:35041:30) 
    at ....../app.js:35052:13 

Est-il possible, et si oui, comment pourrais-je obtenir ces erreurs correctement sourcemapped?

(Je sais que je suis générer les sourcemaps)

Répondre

1

Je l'ai fait de la façon suivante ... Un peu retardé, mais quelqu'un pourrait trouver utile.

Une fois que vous avez accédé à la page jeter l'erreur que vous injectez cette lib: https://github.com/novocaine/sourcemapped-stacktrace

await page.addScriptTag({ 
    url: 'https://cdn.jsdelivr.net/npm/[email protected]/dist/sourcemapped-stacktrace.js', 
}); 

Ensuite, vous écoutez les événements d'erreur:

page.on('pageerror', logStackTrace); 
page.on('error', logStackTrace); 

Dans la fonction logStackTrace vous extrayez le sourcemapped stacktrace comme suit et connectez-le:

const logStackTrace = async (error) => { 
    page.evaluate(stack => new Promise(resolve => 
    window.sourceMappedStackTrace.mapStackTrace(stack, (newStack) => { 
     resolve(newStack); 
    }) 
), typeof error.stack === 'string' ? error.stack : error.stack.join('\n')) 
    .then((result) => { 
    console.log('ERROR:', error.message, result[0]); 
    }); 
}; 

Il ne fait que mapper correctement la première ligne de la pile pour moi. Encore infiniment plus utile.