提问者:小点点

在Heroku上开发带有GraphQL的Shopify应用程序时失败


我正在开发一个带有Node的Shopify私人应用程序。js和React并使用graphqlapi发出请求。当我在本地运行它并用NGROK发布它时,一切都很好,但是当我将代码推送到Heroku时,就会出现错误。我的客户好像有点问题,但我想不出来。

我这样设置Apollo客户端(基于本教程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'
    }
});

构建时,发生了一个关于finch的错误,所以我修改了代码(基于使用ApolloClientnode.js.“全局找不到读取器,也没有通过读取器”):

import ApolloClient from 'apollo-boost';
import { fetch } from 'node-fetch'

const client = new ApolloClient({
    fetch: fetch,
    fetchOptions: {
        credentials: 'include'
    }
});

构建成功了,但是我的GraphQL调用返回错误GraphQL错误只有绝对URL被支持,所以我尝试这样修改代码:

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`
});

现在出现的错误是网络错误:无法获取与CORS问题。

谁能帮我解决这个问题?如果您需要更多信息,请告诉我。


共1个答案

匿名用户

Shopify教程建议对服务器端使用同构获取。我试着把它包括在下一篇文章里。js端,构建成功。

在我的应用程序中。js

require('isomorphic-fetch');
import ApolloClient from 'apollo-boost';

...

const client = new ApolloClient({
  fetchOptions: {
    credentials: 'include'
  },
});