CloudKit 仪表板:将模式部署到生产失败并显示 "There was a problem loading the environment’s status"

CloudKit Dashboard: Deploy Schema to Production fails with "There was a problem loading the environment’s status"

注意:这不是新的,但我对此有一些新的见解。

现在大约三个星期,我经常尝试使用 CloudKit 仪表板将我的 CloudKit 容器的开发模式部署到生产中:

它旋转 正好 一分钟然后告诉我“加载环境状态时出现问题”


这不是新问题,许多其他问题也面临着这个问题:

Apple 支持告诉我

长话短说:

在控制台中通过 运行 终止超时:

var id = window.setTimeout(function() {}, 0);

while (id--) {
    window.clearTimeout(id); // will do nothing if no timeout with id is present
}

(响应是 undefined — 没关系)


我是怎么到那里的

所以我开始查看单击“部署”时站点对后端发出的请求。 Chrome 表明对

的请求
https://p39-ckdatabasews.icloud.apple.com/r/v3/user/<container-name>/production/public/admin/deployment/status?team_id=<team-id>

1.0 分钟后取消。

洞察 1

问题出在 production 架构上。我以前用过 Reset Development Environment 来确保我自己没有把它搞砸,但这会让我省下来。


我使用了 Copy as cURL 命令(在 Chrome 中,因为它还复制了身份验证 cookie,而 Safari 没有)和 运行 在 Terminal 中。

有趣的是, 会在 1'37 分钟后做出响应。 X-Apple-Edge-Response-Time: 97244 header 也是这么说的。

如果您知道要查找什么,控制台也会告诉您请求超时:

洞察 2

服务器响应时间过长(> 1 分钟)并且客户端脚本超时(1 分钟)

注意:您也可以通过right-clicking Chrome中的请求并选择“Replay XHR”来获得响应。


解决方案

我试图理解发送XHR请求和修改超时的JavaScript,但我失败了。但是,您显然可以清除所有存在的超时

var id = window.setTimeout(function() {}, 0);

while (id--) {
    window.clearTimeout(id); // will do nothing if no timeout with id is present
}

(来自 https://whosebug.com/a/8860203

运行 在等待回复的过程中对我来说真的很管用!