Я не могу использовать fetchSync на маршруте API. Что мне нужно изменить в настройках Shopify
Я не могу получить данные из своего API-интерфейса Storefront с помощью метода queryShop, который поставляется с маршрутом API. Сам маршрут работает нормально. Я могу использовать fetchSync (функция выборки из водородного фреймворка) для выборки по определенному маршруту. Но всякий раз, когда я использую queryShop для извлечения чего-либо из моего магазина, он выдает эту ошибку ниже
Error processing route: http://localhost:3000/api/test
TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:14062:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async eval (/node_modules/@shopify/hydrogen/dist/esnext/utilities/fetch.js:15:26)
at async queryShop (/node_modules/@shopify/hydrogen/dist/esnext/utilities/apiRoutes.js:111:16)
at async Object.api [as resource] (/src/routes/api/test.server.ts:4:15)
at async Module.renderApiRoute (/node_modules/@shopify/hydrogen/dist/esnext/utilities/apiRoutes.js:119:20)
at async processRequest (/node_modules/@shopify/hydrogen/dist/esnext/entry-server.js?v=f2dfe530:184:25)
at async handleRequest (/node_modules/@shopify/hydrogen/dist/esnext/entry-server.js?v=f2dfe530:163:20)
Я знаю, что проблема в настройках моего магазина Shopify. Потому что, когда я заменю конфигурацию магазина на магазин предварительного просмотра водорода, он будет работать.
export default defineConfig({
shopify: {
storeDomain: "hydrogen-preview.myshopify.com",
storefrontToken: "3b580e70970c4528da70c98e097c2fa0",
storefrontApiVersion: "2022-07",
},
})
// components/Test.client.tsx
import {
fetchSync
} from "@shopify/hydrogen"
const Test = () => {
const response = fetchSync("/api/test")
console.log(response)
return (
<div>Test</div>
)
}
export default Test
import { HydrogenApiRouteOptions, HydrogenRequest } from "@shopify/hydrogen";
export async function api(request: HydrogenRequest, {queryShop}: HydrogenApiRouteOptions) {
console.log(await queryShop({ query: `query ShopName { shop { name } }`,}))
return "test"
}
Я ожидал, что результат имени магазина будет получен методом queryShop.