我正在尝试从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;
}
1条答案
按热度按时间zpgglvta1#
所以我就遇到了这个问题。这似乎与URL变量全部大写有关。
如果您更改:
致:
这“应该”解决了问题。这对我很管用。
也一定要更改FETCH中的变量,以反映更改。
编辑:因为这个变量是不变的,所以我添加了下划线来说明这一点。