收藏
回答

小程序普通用户调用云函数失败 (system error)?

小程序普通用户调用云函数失败 (system error),管理员正常,环境 ID: cloud1-1gw56yya773541e0

小程序 AppID: wx42d7cf82af185834

云开发环境 ID: cloud1-1gw56yya773541e0

问题描述:

我们的小程序在普通用户使用时遇到了严重问题。当小程序启动或用户尝试登录时,客户端代码尝试调用基础的 login 云函数以获取 openid (wx.cloud.callFunction({ name: 'login' })),但调用直接失败。

失败时,开发者工具控制台和真机调试模式下均报底层的系统错误,具体错误信息类似:

cloud.callFunction:fail Error ... system error (Error), abort

(具体的 callId 可以在错误日志中找到,例如 【请在这里粘贴一个普通用户失败时的 callId,例如:callId: 1743684294974-0.080154019587701246415】)

关键特征:

  1. 仅普通用户失败: 使用管理员账号(已在云数据库 admins 集合中配置)登录小程序时,调用 login 云函数完全正常,可以成功获取 openid 并执行后续逻辑。
  2. 模拟器和真机均复现: 该问题在微信开发者工具的模拟器和手机端的体验版上使用普通用户账号测试时均能稳定复现。
  3. 非代码逻辑问题: 问题似乎发生在客户端发起调用的底层环节,而不是云函数内部的执行逻辑错误。因为:
  • 管理员账号调用同一个 login 函数是成功的。
  • 我们尝试将 login 函数简化到只返回固定字符串,普通用户调用仍然报同样的 "system error"。
  • 我们创建了一个全新的、极其简单的 testHello 云函数,普通用户调用它也报同样的 "system error"。

已尝试的排查步骤(但均未解决普通用户的问题):

  • 检查确认数据库权限: 已按照文档建议,为 userssettingspackages 等集合设置了正确的读写权限(例如,users 集合为“所有用户可读,仅创建者可写”)。
  • 检查确认云函数权限逻辑: 已修改 admin 云函数入口逻辑,确保 getSettings 等必要操作对普通用户开放。
  • 多次重新部署云函数: 已多次对 loginadmin 等核心云函数执行“上传并部署:云端安装依赖”。
  • 代码简化测试: 如上所述,已将 login 函数和创建了 testHello 函数进行最小化测试,普通用户调用依然失败。
  • 清理和重装依赖: 在项目根目录执行了 rm -rf node_modulesrm package-lock.json (或等效命令) 及 npm install
  • 检查云环境状态: 在云开发控制台查看环境状态、资源用量(调用次数、容量等均充足)、费用(无欠费)、安全配置,未发现明显异常。
  • 真机体验版测试: 确认问题在真机上同样存在。

请求协助:

鉴于管理员账号正常,而普通用户在调用任何云函数(包括最基础的 login)时都在客户端底层报错 "system error",且问题在真机上也存在,我们怀疑问题可能出在:

  • 云开发环境 cloud1-1gw56yya773541e0 本身的配置或状态异常,对普通用户产生了影响。
  • 我们的小程序 AppID 与该云环境的关联或授权对普通用户存在问题。
  • 微信平台或基础库层面可能存在特定于我们环境或 AppID 的 Bug。

恳请官方技术支持协助排查此问题,特别是检查我们的云开发环境状态以及 AppID 与环境的关联是否存在针对普通用户的异常限制或错误。

使用的开发者工具版本: 【Stable 1.06.2412050】

测试时使用的基础库版本: 【3.7.12】




回答关注问题邀请回答
收藏
登录 后发表内容