未捕获(承诺)未定义

时间:2019-12-09 21:10:03

标签: angular typescript google-chrome promise

我在chrome中遇到以下错误,不知道它是从哪里来的: Error

唯一能真正说明所有问题的是,我最近重构了大约10,000行代码,并且该错误在其中途出现了一段时间。这是有角度的。我知道如何兑现承诺。我正在使用错误处理程序尝试捕获它,但是那没有用,我也尝试过:

window.addEventListener('unhandledrejection', function (promiseRejectionEvent) {
  console.log(promiseRejectionEvent);
  console.log('here!!!!!')
});
window.onerror = function (promiseRejectionEvent) {
  console.log(promiseRejectionEvent);
  console.log('AHHHH')
};

这些都没有发现错误。我不知道这个错误是从哪里来的。每当我重新加载页面时,它就会出现。

出于真正的好奇心,我尝试转到chrome中的链接,它指向...所以不是很有帮助。

在Firefox中不会发生此错误。

3 个答案:

答案 0 :(得分:1)

消息Uncaught (in promise)是zone.js的一部分:

https://github.com/angular/zone.js/blob/master/lib/common/promise.ts#L194

使用chrome开发工具,在所有文件(cmd / ctrl + shift + f)中搜索此文本,或将(cmd / ctrl + p)跳转到zone.js并找到“未捕获”。命中断点后,放置一个断点,重新加载页面并检查调用堆栈。

希望这会为您指明正确的方向。

答案 1 :(得分:0)

该错误告诉您有错误,但是您没有发现。您很可能可以检查负责路由器,以获取路由/app/outbound/cell-dial或与此相关的任何路由保护功能。

有关路由的更多信息,尤其是有关路由器防护的路由:https://angular.io/guide/router

其他选项是:

  • 使用以下方式重新安装您的依赖项
// Delete
rm -rf node_modules/
npm install
  • 逐步检查您上次提交/合并/拉出时的回购差异

  • 检查您的版本,因为您的依赖版本可能与之前未正确设置的版本不同。

一般来说,这是您可以捕获它的方式(您可能已经知道,但是为了防万一,我还是提到它):

getAllPosts().then(response => {
    console.log(response);
}).catch(e => {
    console.log(e);
});

更多信息:https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch

或使用async / await:

//some async function
try {
    let response = await getAllPosts();
} catch(e) {
    console.log(e);
}

答案 2 :(得分:0)

尝试在隐身模式下运行代码。

我找到了答案,但并不令人满意。这是一个Microsoft Office扩展,它以某种方式注入了被zone.js捕获一半的东西,但不是。我不知道那是怎么回事。

发现错误:

如果您让Chrome在异常情况下暂停,则它将在此错误时停止。错误出在不是我项目中的content.js文件中,所以我说了“嗯...”。然后,通过右键单击“源”选项卡,转到文件的位置,发现错误是在Office扩展名中。因此,如果您得到此Uncaught (in promise) undefined,是因为zone.js错误处理正在捕获该错误。我不知道如何,但是尝试在隐身模式下运行代码。