【问题标题】:How to deal with ajax errors in production?如何处理生产中的ajax错误?
【发布时间】:2017-02-24 09:13:33
【问题描述】:

在开发中,我通常会这样做:

fetchFaqData() {
  this.$http.get('/services/getfaq').then((response) => {
    this.faqs = response.data;
}, (response) => {
    console.log(response);
  });
}

当您在开发中查看您的 ajax 请求是否有问题时,这很好。但是,您如何处理生产中的这段代码?

我认为通过console.log 在生产中显示这一点可能不是明智或可取的。在这种情况下人们会怎么做?

将其写入日志文件或其他什么?我通常在我的代码中使用相当多的这些 ajax 块,我在控制台中注销错误响应。我也经常看到这样的例子。人们是否只是在完成后检查他们的代码并将其记录到日志或其他东西?还是最好从一开始就这样做?

谢谢。

【问题讨论】:

  • 您尝试过像哨兵这样的错误报告服务吗?
  • 如果您使用的是 jQuery,那么您可以使用 $.ajaxSetup() 定义适用于所有 AJAX 请求的通用错误处理程序
  • 首先 - 将 Vue Resource 替换为 Axios,因为不再支持 VueResource。
  • @AllІѕVаиітy 我还没有尝试过哨兵。它说它最多可以免费处理 10k 个事件。一个事件只是类似于console.log?这看起来很不错,我怀疑在这种情况下我们会达到 10k 事件。
  • 我不明白为什么我应该切换到 axios,因为他们的最后一次提交是 1 月 11 日。甚至 vue-resource 也会更频繁地更新。仅仅因为它不再被“官方”支持,这是否意味着它有任何问题。使用 Vue imo 设置起来更容易,而且我习惯使用它。

标签: jquery ajax vuejs2 vue.js


【解决方案1】:

视情况而定,通常您会通过两种方式处理错误:

  1. 如果该错误不影响您系统的工作流程和用户体验,您可以忽略它。如果它很重要,您将能够分析来自服务器的日志并查看它为什么会响应错误。否则,如果这是客户端问题 - 好吧,编写测试伴侣或要求您的用户报告错误:)

  2. 如果错误确实影响了系统的工作流程或用户体验,您可能需要处理该错误并尝试确保您的用户体验不受影响。

示例:

如果您从服务器请求不存在的个人资料图片,请尝试使用一些备用用户图标。

如果您的服务器崩溃并且响应超时,您可以显示一些通知/对话框/消息“糟糕,出了点问题”。

总结一下:

如果对用户体验很重要,则向用户显示人类可读的错误。

Client-side-ajax-errors 并不是很重要,除非它们与某些服务器发生故障同时发生,因为例如,一个人的连接可能不好,他的调用可能会失败。

希望你会发现它有用。

【讨论】:

  • 即使用户工作流程没有受到影响,因为我正确处理了错误并显示了替代的、友好的错误消息或防止出现令人讨厌的东西,但我仍然看不到个人是否出了问题。分析 javascript 中出现问题的日志(如错误的 ajax 请求)。我首先需要一个系统来登录,这整个问题都是关于的。所以我明白你在说什么,这总是令人担忧的,但我需要一个解决方案来解决实际出现问题的情况,即使用户看不到它。
  • @Stephan-v 你不需要分析来自 ajax 的日志,因为即使没有错误,ajax 调用也会失败,例如由于互联网连接不良。我想说的是你需要从后端分析日志,而不是前端。
  • 在你的后端,你当然必须存储所有的请求日志、系统日志,一切。您可以使用各种工具来分析这些。否则只是浪费时间。
【解决方案2】:

我发现自己处于同样的情况,幸运的是我正在获取 JSON 内容,所以我必须拦截并验证响应:

   this.$http.get('/api/json').then((response) => {
    var json = JSON.parse(response.body); 

    if(!json){
        // alert error or do something
    }

   }, (response) => {
    // console.log(response);
  });

希望有人能为我们俩提供更好的答案

【讨论】:

  • 我看到像 sentry.io 这样的东西会在您安装后为您提取诸如 console.log 消息之类的东西。不过,我不确定是否将此类错误消息发送给第三方。除此之外,您还必须为超过 10k 的事件付费。尽管这可能不会很快发生,但我想我宁愿有一个本地解决方案。我将进行更多研究,同时希望人们提供更多答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
相关资源
最近更新 更多