当前位置: 首页 > 面试题库 >

Angular 1.6中可能未处理的拒绝

衡修洁
2023-03-14
问题内容

我有AngularJS的代码:

service.doSomething()
  .then(function(result) {
      //do something with the result
  });

在AngularJS 1.5.9中,当我在以下.then()部分中出现错误时:

service.doSomething()
  .then(function(result) {
      var x = null;
      var y = x.y;
      //do something with the result
  });

我收到明确的错误消息:

TypeError:无法读取null的属性“ y”

但是在具有相同代码的1.6版中,我得到了一个不同的错误:

可能未处理的拒绝:{}未定义

我知道这与此更改有关,并且单个解决方案通过添加.catch()block
非常简单:

service.doSomething()
  .then(function(result) {
      var x = null;
      var y = x.y;
      //do something with the result
  })
  .catch(console.error);

现在我又有了我想要的东西:

TypeError:无法读取null的属性“ y”

但是,如何在整个应用程序中获得相同的结果(更详细的错误)而不.catch()在每个位置添加块?

我通过添加以下内容测试了建议的解决方案以禁用此功能:

$qProvider.errorOnUnhandledRejections(false);

但是有了这种情况,情况就更糟了-控制台中什么也没有!错误被吞没在某个地方,根本没有记录。我不确定AngularJS 1.6或我的配置是否有问题。

您是否有任何想法如何从1.5.9版“还原”日志记录行为?

编辑:

添加自定义错误处理程序:

.factory('$exceptionHandler', function($log) {
  return function(exception, cause) {
    $log.warn(exception, cause);
  };
})

根本没有帮助。在错误处理程序中,我已经收到“包装的”错误。


问题答案:

此问题已通过fix($
q)
进行了修复:向未处理的Promise拒绝中添加回溯-
提交316f60f
,该修复程序包含在v1.6.1版本中。



 类似资料:
  • 我得到以下错误: 这是promise代码,我看不出有什么问题,有什么想法吗? 编辑: 我添加了一个catch函数,得到了一个更好的错误: 这是索引。网间网操作系统。js代码。url很好,并为我提供了正确的json数据。我可以通过控制台日志看到这两个在中提供。但是未定义。 我仍然不确定发生了什么,为什么有问题,为什么它是未定义的。

  • 问题内容: 在Angular应用程序中,我们有一个解决承诺的模式,直到Angular 1.6.0为止,我们的服务一直很好: 这就是我们如何触发业力中的错误: 现在,随着更新至1.6.0,Angular突然在我们的单元测试中(在Karma中)抱怨带有“可能未处理的拒绝”错误的拒绝承诺。但是,我们正在处理第二个调用错误服务的函数中的拒绝。 Angular在这里到底要寻找什么?它希望我们如何“处理”拒绝

  • 当我运行部署我的应用程序的命令时,我发现以下错误 (节点: 6292)UnhandledPromiseRejtionWarning: UnHandledPromiseRejtionWarning: UnHandledPromiseRejtionWarning: UnHandledPromiseRejtionWarning: UnHandledPromiseRejtionWarning: UnHan

  • 我目前正在创建一个食品订购系统,我正在尝试在一个反应原生项目上建立Firebase 该应用程序允许我使用firebase的身份验证,我可以成功登录并注册新用户,但它不允许我使用firestore我正在尝试在my中的以下代码中进行控制台日志,以查看firestore是否将与该应用程序一起运行 下面是该应用程序的列表。js/我调用firestore集合的屏幕 错误如下所示 Firebase错误//错误

  • 我想在Repl上为我的游戏实现一个基本的排行榜。它,所以我创建了一个节点。js后端。这是我在后端的配置: 但是每当我尝试发布时,我都会得到以下错误: (节点:344)未处理的PromisejectionWarning:TypeError:无法读取null的属性“push” (节点:344)UnhandledPromiseRejtionWarning:未处理的promise拒绝。这个错误要么是由于抛

  • 我试图执行下面的代码,但它在管道中抛出未处理的promise拒绝警告。在本地,它工作正常,没有任何问题。 日志错误:找不到进程“3224”。(节点:836)未处理的PromisejectionWarning:#(节点:836)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。c