javascript - 需要异步!带有 Google 客户端 API 的插件 - 加载超时?

标签 javascript asynchronous requirejs

一些客户端无法在生产环境中加载 Google API,但我无法发现我的代码有任何问题。

这是我得到的:

//  Load Google's JavaScript Client API using requireJS !async plugin.
//  You can learn more about the async plugin here: https://github.com/millermedeiros/requirejs-plugins/blob/master/src/async.js
define([
    'async!https://apis.google.com/js/client.js!onload'
], function () {
    'use strict';

    console.log("googleAPI has loaded", window.gapi, window.gapi.client);

    return window.gapi;
});

我已从以下位置提取此信息:Load async resource with requirejs timeout

显示的错误消息是:

Uncaught Error: Load timeout for modules: async!https://apis.google.com/js/client.js!onload_unnormalized2,async!https://apis.google.com/js/client.js!onload http://requirejs.org/docs/errors.html#timeout

这段代码不会在本地给我带来任何问题。它加载良好。

我调试该问题的第一步是将 requireConfig 中的 waitMinutes 从 7 增加到 90。我想也许很多人的连接速度都很慢:

define(function () {

    require.config({

        baseUrl: 'js/',

        enforceDefine: true,

        //  I'm seeing load timeouts on in googleAPI -- seeing if increasing wait time helps.
        waitSeconds: 90,
        ...
    });
});

这似乎并没有影响问题。我仍然看到许多客户报告问题。

在这种情况下我还可以使用哪些其他调试选项?谢谢

最佳答案

因此,当我尝试在 Internet Explorer 8 中调试我的应用程序时,我遇到了类似的问题,也许我的经历与您的客户的经历类似。

对我来说,我发现我收到了超时错误,因为我的测试浏览器由于根证书过期而在通过 https 检索资源时出现问题。我在运行 Windows 7 的虚拟机中进行了所有 Internet Explorer 测试。当我尝试加载应用程序时,我收到了您在帖子中提到的相同错误:

Uncaught Error: Load timeout for modules:
async!https://apis.google.com/js/client.js!onload_unnormalized2,async!https://apis.google.com/js/client.js!onload http://requirejs.org/docs/errors.html#timeout

我手动尝试了该网址,并在浏览器上看到“不受信任的证书”警告页面。这让我很困惑,但后来我发现我的 Windows 操作系统上的根证书已经过时,导致 https 握手失败。异步插件似乎消耗了身份验证异常,只是等待某些事情神奇地完成,从而导致超时错误。

我发现有效的解决方案如下:

  1. 更新操作系统的根证书
  2. 将浏览器的安全属性更改为不需要证书身份验证

对于进一步调试的建议,我有两个想法:

  1. 尝试将浏览器的安全属性设置得尽可能高,看看是否可以重现问题(或者只是暂时删除本地证书)
  2. 要求您的客户将浏览器的安全属性设置得尽可能低,确保禁用证书身份验证要求,并询问他们是否仍然遇到问题。 (如果问题消失,他们可能需要手动更新本地证书)

关于javascript - 需要异步!带有 Google 客户端 API 的插件 - 加载超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034101/

相关文章:

javascript - javascript中的内存问题

javascript - 无法摆脱 header X-Powered-By :Express

node.js - 使用 grunt 运行 Google Closure 编译器

javascript - session 存储编号变量存储为字符串

javascript - 在浏览器上查看的所有网站中访问本地存储变量

javascript - 从完成 API 调用的 Promise 链中返回一个字符串

javascript - 收听页面内容已更新

javascript - 如何在循环之后/之前管理异步功能

knockout.js - 将 FlattenedTreeTableDataSource 与 CollectionTreeDataSource 一起使用时出现问题

javascript - Backbone.js Firefox 问题