React Native Amplify项目新增模型后DataStore报subscriptionError连接失败
问题引发原因
- 你新增
DbConversion模型后,仅修改了本地的schema.graphql文件,没有执行完整的Amplify后端部署流程,导致AppSync端的GraphQL接口没有自动生成@model指令依赖的系统字段(_version/_lastChangedAt/_deleted)以及对应的订阅、突变解析器配置。DataStore做增量同步时会默认请求这些字段,后端不存在就会抛出字段未定义的报错。 - 本地DataStore的模型代码没有同步更新,新旧模型的本地定义和后端接口结构不匹配,也会触发该类报错。
- 如果你此前手动修改过AppSync自动生成的Schema或解析器,新增模型时会导致自动生成逻辑冲突,系统字段无法正常更新。
解决方案
按照以下步骤依次操作即可修复:
- 重新生成本地DataStore模型代码,确保本地定义和你编写的Schema一致:
amplify codegen models
- 部署更新后的Schema到AWS云端,部署过程中提示是否开启冲突解决时选择是(DataStore依赖冲突解决能力生成对应的系统字段):
amplify push
- 清空客户端本地的旧DataStore缓存,避免旧结构残留导致报错:React Native端可直接卸载重装App,也可在App初始化逻辑中调用一次
await DataStore.clear()清理缓存。 - 确认DataStore配置的执行顺序:必须先调用
Amplify.configure(awsconfig)完成全局配置,再执行DataStore.configure()配置同步规则,否则配置不会生效。
附加问题修复
你提到的安卓端长定时器警告是React Native的已知兼容问题,可在项目入口文件添加以下代码屏蔽无关警告:
import { LogBox } from 'react-native'; LogBox.ignoreLogs(['Setting a timer']);
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

