升级Amplify CLI后部署AWS Amplify新数据模型报Unknown directive "key"错误
错误原因
Unknown directive "key"报错由Amplify GraphQL Transformer版本不兼容导致:新版Amplify CLI默认启用Transformer v2,该版本移除了旧版v1中用于定义主键、索引的@key指令,替换为@primaryKey和@index指令。

解决步骤
方案1:迁移Schema到Transformer v2规范(推荐)
将原有Schema中所有@key指令做对应替换:- 原
@key用于定义自定义主键的场景:将@key(fields: ["id", "createdAt"])替换为@primaryKey(sortKeyFields: ["createdAt"]) - 原
@key用于定义二级索引的场景:将@key(name: "byCategory", fields: ["category", "createdAt"], queryField: "listPostsByCategory")替换为@index(name: "byCategory", sortKeyFields: ["createdAt"], queryField: "listPostsByCategory")
替换完成后重新执行amplify push即可正常部署。
- 原
方案2:临时回退使用Transformer v1(仅用于紧急兼容,不推荐长期使用)
如果暂时没有时间完成Schema迁移,可以在项目的amplify/cli.json文件中添加如下配置,强制使用旧版Transformer:
{ "features": { "graphqltransformer": { "useexperimentalpipelinedtransformer": false, "transformerversion": 1 } } }
修改完成后重新执行amplify push即可兼容旧版Schema。
内容的提问来源于stack exchange,提问作者hewa
相关产品推荐
相关产品推荐

