修复一次应用市场发布失败
当发布或更新弹窗返回一个错误、或者你收到我们关于一次发布失败的一封邮件时,在下面找到你的错误码并照那个修复做。你一把修复推到你的仓库,就再点一次“发布或更新”以立即重新检查,或者等下一次每日索引器运行。
这里列出的每一个失败都是你能在你仓库里修好的东西。如果你没在这里看到你的错误,就到 完整发布错误参考 查那些较少见的码。
terms_accepted 未设置
当你的 caputchin.json 在顶层没有 "terms_accepted": true 时你看到这个。
- 打开你仓库的
caputchin.json。 - 读 应用市场提交条款。
- 在清单顶层加
"terms_accepted": true。 - 提交并推送。
- 再点一次“发布或更新”,或等下一次每日索引运行。
这个值必须是字面量 JSON 布尔 true。字符串("true")、数字(1)、或省略这个字段都算未接受。
许可证不在批准清单上
当 license 缺失、畸形、或点名一个在我们 批准清单 之外的标识符时你看到这个。
- 从批准清单里挑一个真正涵盖你代码和捆绑资源的 SPDX 标识符。
- 打开
caputchin.json并在顶层设置license字段,例如"license": "MIT"。 - 如果你的代码是双许可的,就用一个 SPDX
OR表达式(例如"MIT OR Apache-2.0")。至少一个分支必须在批准清单上。 - 如果你的代码是 MIT 但捆绑了 Creative Commons 资源,就用
AND(例如"MIT AND CC-BY-4.0")。每个分支都必须在批准清单上。 - 提交、推送、重试。
如果你的项目依赖一个不在我们批准清单上的许可证(最常见的是 GPL 家族、AGPL 或 LGPL),唯一的修复是重新许可或移除受影响的组件。我们无法按作者逐一给予例外。
我们找不到你的仓库
当我们的清单拉取返回一个 404 时你看到这个。
常见原因和修复:
- 你的仓库是私有的。把它设为公开,或移除
caputchin-gametopic 以不再出现在索引里。 - 你的仓库缺
caputchin-gameGitHub topic。经仓库页面上的 About 区加上它。 - 你的仓库根部没有
caputchin.json(或者,对一个集合里的子游戏,leaf 目录处没有caputchin.json)。 - 你输入的仓库 URL 错了。用
owner/name或完整的https://github.com/owner/nameURL。
把一个 caputchin.json 推到你的仓库,然后重试。
清单结构畸形
你看到一个 manifest-error,它的详情以一个字段名开头,比如 entry、npm、games、marketplace.support 或 run.modules[0].name。
那个详情确切告诉你哪个字段错了:
entry: entry must be a clean relative path:你的entry值含有穿越(../)、绝对斜杠、查询字符串或空白。用一个干净的仓库相对路径,比如dist/game.js。npm: npm package name is malformed:你的npm字段不是一个有效的 npm 坐标。用name或@scope/name,只用字母数字 + 连字符 + 点 + 下划线。games[i] must be a relative path inside the repo:你集合games数组里的一个子路径逃出了仓库。用像packages/leaf-memory这样的路径,而不是../external或/abs/path。run.entry must be a clean relative path:和entry同样的卫生规则,应用到可选的拆分 run 入口上。run.modules[i].name:模块名必须匹配[a-zA-Z0-9_-]+\.(wasm|js)$,且不能是entry.js或artifact.js。
按那条规则编辑被点名的字段,提交、推送、重试。
marketplace.author 有一个无效邮件
当 marketplace.author.email 存在但不匹配一个正常的邮件形状(一个 @、一个带点的域、无空白)时你看到这个。
- 打开
caputchin.json。 - 找到
marketplace.author.email。 - 要么把这个值修成一个真实的邮件地址(我们只把它用于发布失败通知),要么把这个字段整个移除。
- 提交、推送、重试。
如果你不想收到发布失败通知,你也可以把整个 marketplace.author 块移除。
你的 run 工件非确定性
当我们的一致性冒烟跑你游戏的 run(seed, trace) 函数、而它没产出一个合规的裁定时你看到这个。
重要:这不是一个致命的发布失败。你的游戏仍在应用市场浏览里被列出,且能被嵌入。它只是显示 不可回放,并且在那个确定性问题被修好之前无法给一个站点密钥设关卡。
常见原因:
- 你的模拟读
Date.now()、performance.now()、Math.random()或其他非确定性的全局量。 - 你的模拟读我们在回放时不提供的外部状态(DOM、网络、存储)。
- 你的模拟依赖在不同运行时之间有差异的浮点算术。
把模拟修成种子和轨迹的一个纯函数,推送、重试。那条确定性规则见 回放契约,并考虑那个可选的 引擎套件,它提供一个确定性的可播种 RNG 和时钟。
包拉取失败
当由 entry 和/或 npm 钉住的包 URL 拉取不了、返回一个非 2xx、或超过 12MB 时你看到这个。
- 如果你刚推了一个新版本:CDN 可能还没传播。等一分钟再重试。
- 如果你的包超过 12MB:精简资源、通过
run声明拆分成模块,或把大资源移到一个不同的交付路径。 - 如果你的
npm包还没发布:先发布它;我们拉不到未发布的版本。
发布请求太多
当你在过去 60 秒里提交了超过十个请求时,你在手动发布弹窗上看到这个。
等 60 秒再重试。没有办法提高这个限制;它保护这个端点免受滥用。
停止通知邮件
如果你想停止收到发布失败邮件,见 提交条款第 10 节。那个收件地址是清单里你的 marketplace.author.email;移除或更改它就停掉这些邮件。