在 Heroku 上开发时,使用 GraphQL 的 Shopify 应用程序无法运行
Posted
技术标签:
【中文标题】在 Heroku 上开发时,使用 GraphQL 的 Shopify 应用程序无法运行【英文标题】:Shopify app with GraphQL failed to work when developing on Heroku 【发布时间】:2020-04-21 21:34:24 【问题描述】:我正在使用 Node.js 和 React 开发 Shopify 私有应用程序,并使用 GraphQL api 发出请求。当我在本地运行它并使用 NGROK 发布它时一切正常,但是当我将代码推送到 Heroku 时,会发生错误。好像是ApolloClient有问题,但是想不通。
我是这样设置ApolloClient的(基于本教程https://developers.shopify.com/tutorials/build-a-shopify-app-with-node-and-react/fetch-data-with-apollo):
import ApolloClient from 'apollo-boost';
const client = new ApolloClient(
fetchOptions:
credentials: 'include'
);
在构建的时候,出现了关于fetch
的错误,所以我修改了代码(基于Using ApolloClient with node.js. "fetch is not found globally and no fetcher passed"):
import ApolloClient from 'apollo-boost';
import fetch from 'node-fetch'
const client = new ApolloClient(
fetch: fetch,
fetchOptions:
credentials: 'include'
);
构建成功,但是我的 GraphQL 调用返回错误graphql error only absolute urls are supported
,所以我尝试修改代码如下:
import ApolloClient from 'apollo-boost';
import fetch from 'node-fetch'
const client = new ApolloClient(
fetch: fetch,
fetchOptions:
credentials: 'include'
,
uri: `https://$shopOrigin/admin/api/2019-10/graphql.json`
);
现在发生的错误是 Network Error: Failed to Fetch
,存在 CORS 问题。
谁能帮我解决这个问题?如果您需要更多信息,请告诉我。
【问题讨论】:
问题已解决!我重置代码,今天又试了一次,只更新了模块并添加了fetch: fetch
,然后这次运行正常,不知道上周是什么问题。
【参考方案1】:
Shopify 教程建议在服务器端使用 isomorphic-fetch。我尝试将它包含在 Next.js 端,构建成功。
在我的 _app.js 中
require('isomorphic-fetch');
import ApolloClient from 'apollo-boost';
...
const client = new ApolloClient(
fetchOptions:
credentials: 'include'
,
);
【讨论】:
以上是关于在 Heroku 上开发时,使用 GraphQL 的 Shopify 应用程序无法运行的主要内容,如果未能解决你的问题,请参考以下文章
前端应用 Graphql 请求被 Safari、Firefox 阻止,但 Heroku 上的 Chrome 没有阻止
flutter_graphql 不起作用,并且在应用程序构建后总是返回 null
hasura graphql server 集成gatsby