使用Google客户端API的RequireJS async!插件-加载超时?

3
一些客户端在生产环境下无法加载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: 模块加载超时: 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,
        ...
    });
});

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

在这种情况下,我还有哪些调试选项可用?谢谢。

1个回答

0

我在尝试在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

我手动尝试了一下这个URL,结果浏览器弹出了一个“不受信任的证书”警告页面。这让我很困惑,但后来我发现我的Windows操作系统上的根证书已经过期,导致https握手失败。异步插件似乎会消耗掉认证异常,然后就一直等待着某些神奇的东西通过,最终导致超时错误。

我找到的解决方案如下:

  1. 更新操作系统的根证书
  2. 更改浏览器的安全属性,不要求证书认证

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接