代码之家  ›  专栏  ›  技术社区  ›  cormacncheese

getaddrinfo ENOTFOUND错误Shopify getSubscriptionUrl Shopify Admin API GraphQL

  •  0
  • cormacncheese  · 技术社区  · 5 年前

    我试图设置一个用React/Node编写的Shopify定期订阅应用程序,但当我从server.js调用以下代码时,我收到了FetchError

    错误:

    FetchError: request to https://[ACCESS_TOKEN]/admin/api/2020-10/graphql.json failed, reason: getaddrinfo ENOTFOUND [ACCESS_TOKEN]
      at ClientRequest.<anonymous> (/Users/cormachayden/Desktop/apps/easy-tok/node_modules/node-fetch/lib/index.js:1461:11)
      at ClientRequest.emit (events.js:315:20)
      at TLSSocket.socketErrorListener (_http_client.js:469:9)
      at TLSSocket.emit (events.js:315:20)
      at emitErrorNT (internal/streams/destroy.js:106:8)
      at emitErrorCloseNT (internal/streams/destroy.js:74:3)
      at processTicksAndRejections (internal/process/task_queues.js:80:21)
    

    我的代码:

      const getSubscriptionUrl = async (accessToken, shop, returnUrl = process.env.HOST) => {
      const subscirptionQuery = JSON.stringify({
        query: `mutation {
          appSubscriptionCreate(
            name: "Easy Tok Premium"
            lineItems: {
              plan: {
                appRecurringPricingDetails: {
                  price: { amount: 4.0, currencyCode: USD}
                }
              }
            }
            test: true
            returnUrl: "https://${shop}.myshopify.com/admin/apps/easy-tok"
          ) {
            confirmationUrl
          }
        }`
      });
    
      const response = await fetch(`https://${shop}/admin/api/2020-10/graphql.json`, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          "X-Shopify-Access-Token": accessToken,
        },
        body: subscirptionQuery
      })
    
      const responseJson = await response.json();
      return responseJson.data.appSubscriptionCreate.confirmationUrl;
    };
    
    module.exports = getSubscriptionUrl;
    

    本地和部署到Heroku时都会发生相同的错误

    0 回复  |  直到 5 年前
        1
  •  1
  •   drip    5 年前

    你的 shop 变量正在返回您的AccessToken,而不是 shop_name.myshopify.com 因此,你的请求正在成为 https://ACESS_TOKEN/admin/api/2020-10/graphql.json 这是无效的。

    请仔细检查您的 商店 变量,您在哪里设置它,请立即生成一个新的访问令牌,因为您不应该以任何代价公开提供您的访问令牌。

    附言 出于安全原因,我编辑了你的问题以删除令牌!(请记住,历史仍将保留它,所以请更改它)