一些客户端无法在生产环境中加载 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 握手失败。异步插件似乎消耗了身份验证异常,只是等待某些事情神奇地完成,从而导致超时错误。
我发现有效的解决方案如下:
- 更新操作系统的根证书
- 将浏览器的安全属性更改为不需要证书身份验证
对于进一步调试的建议,我有两个想法:
- 尝试将浏览器的安全属性设置得尽可能高,看看是否可以重现问题(或者只是暂时删除本地证书)
- 要求您的客户将浏览器的安全属性设置得尽可能低,确保禁用证书身份验证要求,并询问他们是否仍然遇到问题。 (如果问题消失,他们可能需要手动更新本地证书)
关于javascript - 需要异步!带有 Google 客户端 API 的插件 - 加载超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034101/