H5 应用加载失败:页面提示:“NoSuchKey. The specified key does not existed...”

问题症状

开发者在完成基本接入后打开 H5 应用失败,容器页面显示错误信息“NoSuchKey. The specified key does not exist…”,如下图:image.png

错误样例:

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<RequestId>5F4DFBE4F1AC943937FBCA6D</RequestId>
<HostId>mcube-prod.oss-cn-hangzhou.aliyuncs.com</HostId>
<Key>A5F87CB301605-beimo/20200024/1.0.0.0_all/nebula/fallback/www/index2.html</Key>
</Error>

常见原因

这类问题的直接原因是 mPaaS Nebula 容器直接访问的地址指向了一个 MDS 服务器上不存在的文件。从这个原因出发,触发问题的流程一般为:客户端试图访问一个离线包中不存在的资源,客户端本地未命中,线上 fallback 地址也未命中,MDS 服务器返回该错误。

问题排查步骤

根据原因分析,排查方向如下:

  1. 客户端打开的 H5 App 的页面地址是否正确。

  2. 离线包中相关的资源是否打包正确。

确认 H5 App 打开的页面地址是否正确

这里有三类情况:

  1. 主动打开 H5 App 时,传入的 URL 参数是否正确。image.pngimage.png

  2. 根据 H5 App 页面跳转的逻辑确认所打开的页面地址是否正确,包括 pushWindow()location.href 等跳转形式的目标 URL 设置是否正确。

  3. 在上传离线包的时候,开发者务必要配置好 H5 App 的默认入口 URL。如果没有配置该 URL 或配置的入口 URL 不正确,容器直接打开 H5 App 时无法提供正确的页面地址,从而导致该问题产生。image.png

离线包中相关的资源是否打包正确

  1. 控制台下载 .amr 文件,修改后缀名为 .zip 后解压,解压文件夹中的 .tar 文件,即可看到离线包中的资源文件。image.pngimage.png然后确认要打开的页面资源文件是否包含在这个文件夹内。

  2. 确认当前 App 的环境配置和目前离线包的环境是否一致:

    • 查看 App 工程中的 meta.config 中的 App ID:image.png

    • 查看目标 H5 App 离线包所在控制台上的 App ID。image.png