如何解决从Shopify API获取产品时出错

e5nqia27  于 2022-10-21  发布在  其他
关注(0)|答案(1)|浏览(295)

我正在尝试从Shopify API获取产品,但我不明白为什么它在我的Catch语句中抛出了一个错误集。错误显示

error - utils/fetchShop.js (28:10) @ productData
Error: Products not fetched
  26 |     return data;
  27 |   } catch (error) {
> 28 |     throw new Error('Products not fetched');
     |          ^
  29 |   }
  30 | }

你能帮我找出我做错了什么吗?所以基本上我是
1.创建一个名为ProductData的函数,该函数将接受查询。
1.ProductData它会使用设置的Header向Shopify Storefront GraphQL接口发出POST请求,并返回json响应。
1.ProductData函数会将数据返回给getAllProducts函数,该函数会将其设置为等于allProducts变量。
以下是我的代码:

const domain = process.env.SHOPIFY_STOREFRONT_DOMAIN;
const storefrontAccessToken = process.env.SHOPIFY_STOREFRONT_ACCESS_TOKEN;

async function productData(query) {
  const URL = `https://${domain}/api/2022-04/graphql.json`;

  const options = {
    endpoint: URL,
    method: 'POST',
    headers: {
      'X-Shopify-Storefront-Access-Token': storefrontAccessToken,
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ query }),
  };

  try {
    const data = await fetch(URL, options).then((response) => {
      return response.json();
    });

    return data;
  } catch (error) {
    throw new Error('Products not fetched');
  }
}

export async function getAllProducts() {
  const query = `{
    products(first: 250) {
      edges {
        node {
          handle
          id
        }
      }
    }
  }`;

  const response = await productData(query);

  const slugs = response.data.products.edges
    ? response.data.products.edges
    : [];

  return slugs;
}
zpgglvta

zpgglvta1#

所以我就遇到了这个问题。这似乎与URL变量全部大写有关。
如果您更改:

const URL = `https://${domain}/api/2022-10/graphql.json`;

endpoint: URL

致:

const _url = `https://${domain}/api/2022-10/graphql.json`;

endpoint: _url

这“应该”解决了问题。这对我很管用。
也一定要更改FETCH中的变量,以反映更改。
编辑:因为这个变量是不变的,所以我添加了下划线来说明这一点。

相关问题