2

我正在玩偶操作(这可能是动词吗?)一个使用 webpack 构建的应用程序,page.on('error')我收到如下错误:

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

有没有办法,如果是这样,我怎样才能正确地对这些错误进行源映射?

(我确定我正在生成源图)

4

1 回答 1

4

我是按以下方式完成的……有点延迟,但有人可能会觉得它很有用。

导航到抛出错误的页面后,您将注入此库:https ://github.com/novocaine/sourcemapped-stacktrace

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

然后你监听错误事件:

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

在 logStackTrace 函数中,您提取 sourcemapped stacktrace 如下并记录它:

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]);
  });
};

它只为我正确映射堆栈的第一行。仍然无限有用。

于 2018-02-15T11:55:31.297 回答