You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amplify Codegen报错:API命名空间无导出成员问题求助

AWS Amplify Codegen 无参数操作类型缺失问题诊断与解决

问题描述

Web应用依赖AWS Cognito用户池、AppSync GraphQL API,这些资源在独立项目维护。修改资源时,一直通过以下amplify命令删除后重新导入:

$ amplify remove auth
...
$ amplify remove api
...
$ amplify import auth
...
$ amplify codegen add --apiId <my API ID>
...

该流程此前正常运行数月,近期执行删导操作后,amplify codegen生成的TypeScript代码出现编译错误:仅4个无需参数的GraphQL操作报错,所有带参数的查询、变更、订阅对应的类型均正常生成且编译通过。

典型报错信息:

ERROR in src/graphql/queries.ts:21:30
TS2694: Namespace "<path to project>/src/API" has no exported member 'SomeAPIOperationQueryVariables'.

ERROR in src/graphql/subscriptions.ts:25:12
TS2724: "<path to project>/src/API" has no exported member named 'AThirdAPIOperationVariables'. Did you mean 'AThirdAPIOperation'?

已尝试重新执行导入流程、删除本地Amplify文件、重置云端资源后amplify init、拉取全新代码库等操作,问题仍存在。API及架构本身无问题,在其他项目可正常运行。

诊断与解决步骤

  • 检查Amplify CLI版本:不同版本的amplify codegen对无参数操作的变量类型生成逻辑可能存在差异。执行amplify codegen --version查看版本,若不是最新稳定版,执行npm install -g @aws-amplify/cli升级,之后重新执行amplify codegen add和amplify codegen generate。
  • 验证API.ts生成内容:打开自动生成的src/API.ts,确认无参数操作的变量类型是否缺失。例如无参数查询SomeAPIOperation,正常应生成SomeAPIOperationQueryVariables(即使是空对象类型)。若确实缺失,可手动临时添加以下代码验证:
    // 在API.ts末尾添加临时类型
    export type SomeAPIOperationQueryVariables = {};
    export type AnotherAPIOperationQueryVariables = {};
    export type AThirdAPIOperationVariables = {};
    export type AFourthAPIOperationSubscriptionVariables = {};
    
    重新编译后若错误消失,可确认是codegen的生成逻辑问题。
  • 检查GraphQL操作定义格式:打开报错的queries.ts/subscriptions.ts,确认无参数操作的定义是否存在语法问题,比如多余的空参数括号:
    // 错误写法(多余空括号)
    query SomeAPIOperation() { ... }
    // 正确写法
    query SomeAPIOperation { ... }
    
    这类格式问题会导致codegen无法正确识别变量类型(即使无参数)。
  • 清理codegen缓存:删除本地.amplify/generated目录(若存在),执行amplify codegen generate --clear强制重新生成所有类型文件。
  • 检查Amplify项目配置:查看amplify/backend/api/<api-name>/parameters.json确认apiId是否正确;检查amplify/backend/api/<api-name>/codegen.ts中的生成规则,是否存在排除无参数操作的配置。
  • 手动同步Schema:从AppSync控制台下载最新的Schema文件,替换本地amplify/backend/api/<api-name>/schema.graphql,然后执行amplify codegen generate,验证是否能生成正确的变量类型。

内容的提问来源于stack exchange,提问作者ssc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:16:11