关于临时解决"saveFile:fail the maximum size of the file storage limit is exceeded"的办法

  • Creator 版本:2.0.1及以后

  • 目标平台: WeChat Game

  • 详细报错信息,包含调用堆栈:
    saveFile:fail the maximum size of the file storage limit is exceeded
    和一堆包含文件路径的Array

  • 重现方式:CocosCreator项目存在足够多的远程服务器资源(但不超过微信要求的50m大小)

  • 之前哪个版本是正常的 :2.0.0及

  • 编辑器操作系统 :Windows 10 Pro 1803

  • 编辑器之前是否有其它报错 :无

  • 出现概率:
    在md5缓存开启的情况下重新打包几乎必出(未开启md5缓存情况没有测试)
    微信开发者工具并不会存在这个问题,偶尔也会有但是可以清除文件缓存来解决

  • 额外线索:
    原因可能为两个:
    1)没有清理微信开放用户目录的旧文件,文件没有被清理,加载新的文件时本地文件总大小超出50m的微信容量上限,导致加载失败。
    2)加载文件时除了带md5的文件路径,不带md5的文件路径也执行了一边加载,然后远程下载失败的文件保存也失败,执行回调的时候写入了报错信息,终止了文件加载,导致本地资源加载失败无法进行游戏。

已经测试过在启动游戏后第一个运行脚本内的“onLoad”中手动查找微信缓存并删除可以解决问题
已经过调试是"wx-downloader.js"这个文件内的“downloadRemoteFile”函数内使用微信“downloadFile”和“saveFile”的失败"fail"回调执行的"callback"回调函数传入的参数产生的影响。(没有具体测试是哪一个产生的影响)
参照2.0.0及以前的"wx-downloader.js"将参数传null测试恢复正常,但没有继续跟踪后续代码执行的内容。

  • 临时解决方案:
    将 安装目录\resources\builtin\weapp-adapter\wechatgame\libs下的wx-downloader的上述两个回调的参数置为空
    (记得备份)
1赞

已经测试过在启动游戏后第一个运行脚本内的“onLoad”中手动查找微信缓存并删除可以解决问题,楼主这招怎么使用,~教一下

使用微信的API,查找用户文件夹下的所有文件,然后手动删除。具体时机要你自己控制