【发布时间】:2022-01-20 02:57:31
【问题描述】:
我有一个在两个环境中运行的 React Amplify 应用程序。一种环境用于我妻子的博客 (www.riahraineart.com),另一种用于我的博客 (www.joshmk.com)。两个站点都在同一个 repo 上运行,我只是根据我用来从表中检索它们的配置的环境变量来配置站点的不同。
useEffect(() => {
async function fetchData() {
const configData = await API.graphql({
query: queries.getConfiguration,
variables: { id: process.env[configIdName] },
});
if (configData && isMounted.current)
setConfig(configData.data.getConfiguration || {});
}
if (process.env[configIdName]) {
fetchData();
}
}, [isMounted, configIdName]);
对于我的站点,当我为此配置发出 GraphQL 请求时,它成功并且站点启动。对于我妻子的站点,对配置表的调用会静默失败。静默是指 API 没有返回有用的响应,即使它是成功的 200 响应。
当我打开 AppSync,转到两个环境并运行查询时,我会收到配置项。当我打开 dynamodb 时,我也会看到它们。
我认为某处可能有一些过期的令牌,但如果是这种情况,我想我会收到一个失败的响应,说明这一点。
另一种可能是我的妻子修改了她网站的配置或创建了一个帖子,其中包含一些前端没有预料到的内容。但在这种情况下,我至少希望看到调用响应以接收她的站点配置。
在此先感谢您提供的任何见解!
【问题讨论】:
-
CORS 可能是罪魁祸首吗?
-
嗯,@Norman 我希望如果 CORS 配置错误,两个站点都会失败。
-
当您在 appsync 控制台中运行错误查询时,它的结果是什么?配置表项在 dynamodb 控制台中是否按预期存在?换句话说,首先尝试排除后端问题。
-
@fedonev 对这两个问题都是肯定的。当我在 AppSync 中转到它们各自的环境并运行查询时,我会看到配置项。而且在查看 dynamodb 中的表格时,我还看到了配置项。我应该在上面提到,我会补充。
-
这很有帮助! AppSync 控制台是一个客户端实现,可以像前端一样进行调用。如果 AWS 控制台查询返回预期结果,则您已将问题缩小为前端问题。如果您需要更有说服力,请执行cURL or Postman 中的错误查询。我希望它会正常工作。另一个测试 - 模拟空响应:当您的客户端将格式良好但不存在的变量输入传递给查询时,您从 AppSync 得到什么响应?
标签: reactjs amazon-web-services graphql aws-amplify aws-appsync