React+GraphQL向DynamoDB传数据时遇No credentials错误求助
解决AWS Amplify调用GraphQL Mutation时的「Error: No credentials」问题
针对你调用createPerson mutation时出现的无凭证错误,以下是直接有效的排查和解决步骤:
1. 确认Amplify已在项目中正确初始化
你的React项目入口文件(如index.js或App.js)必须包含Amplify初始化代码,确保加载核心配置:
import Amplify from 'aws-amplify'; import awsconfig from './aws-exports'; Amplify.configure(awsconfig);
同时要保证项目根目录存在aws-exports.js文件——这是amplify init生成的核心配置文件,缺失或配置错误会直接导致凭证加载失败。如果没有该文件,重新执行amplify init完成初始化流程。
2. 检查GraphQL API的授权模式
默认创建的Amplify GraphQL API可能使用「Amazon Cognito User Pool」授权,这种模式要求用户登录才能调用mutation。若你是未登录状态操作,需修改API授权设置:
- 执行命令
amplify update api,选择「GraphQL」类型 - 选择「Edit authorization modes」,添加或切换到「API key」授权模式
- 完成配置后执行
amplify push,将更新同步到云端
3. 验证API Key的有效性(若使用API Key授权)
如果采用API Key模式,检查aws-exports.js中的aws_appsync_apiKey是否有效:
- 登录AWS控制台,进入AppSync服务,找到你的API,查看「Settings」中的API Key状态
- 若Key已过期,点击「Create API Key」生成新Key,更新到
aws-exports.js中,或执行amplify pull拉取最新配置
4. 调用API时显式指定授权模式
可以在调用API.graphql时直接指定授权模式,强制使用正确的凭证方式,修改你的addPerson函数:
async function addPerson() { console.log(name, phone, email, address); try{ const entry ={ name, phone, email, address }; let response = await API.graphql({ query: createPerson, variables: { input: entry }, authMode: 'API_KEY' // 根据你的授权模式调整,比如'AMAZON_COGNITO_USER_POOLS'(需登录) }); console.log(response.data); } catch(error){ console.log(error); } }
5. 清除缓存并重建项目
缓存可能导致配置未生效:
- 删除项目根目录的
node_modules和package-lock.json,重新执行npm install - 清除浏览器缓存,或使用无痕模式测试
- 执行
amplify clean后重新执行amplify push同步配置
内容的提问来源于stack exchange,提问作者Parm
相关产品推荐
相关产品推荐

