簡體   English   中英

Shopify Buy SDK-添加訂單項錯誤

[英]Shopify Buy SDK — Add line items error

我正在使用shopify buy SDK創建自定義店面:

  • 嘗試添加訂單項時出現錯誤
  • 下面的示例代碼可以正常工作,但遇到“ addLineItems”方法時除外:我已經檢查了參數,它們看起來還不錯。

 shopify.checkout.create().then((checkout) => { checkoutId = checkout.id console.log('checkout id: ' + checkoutId) // Works OK }) shopify.product.fetchAll().then((products) => { lineItemsToAdd = [ {variantId: products[0].variants[0].id, quantity: 1} ] console.log('line items to add: ' + lineItemsToAdd) // Works OK }) shopify.checkout.addLineItems(checkoutId, lineItemsToAdd).then((checkout) => { console.log('checkout line items: ' + checkout.lineItems) }) // Throws error 

我得到的錯誤是:

 index.js?7327:3705 Uncaught (in promise) TypeError: Cannot read property 'checkoutLineItemsAdd' of undefined at eval (index.js?7327:3705) at <anonymous> 

發生此問題是因為Javascript本質上是異步的。

您的所有呼叫均同時執行,因此不會。 由於存在checkoutId, lineItemsToAdd在執行addLineItems時不會設置checkoutId, lineItemsToAdd變量。

您需要使用Promise創建序列。 你可以在這里閱讀。 帶有承諾的代碼示例:

<script>

const client = ShopifyBuy.buildClient({
  domain: '-----------------------',
  storefrontAccessToken: '--------'
});
var checkoutPromise = client.checkout.create()
var productPromise = client.product.fetchAll()


Promise.all([checkoutPromise,productPromise]).then(([checkout,products]) => 
{
    var lineItemsToAdd = [
        {variantId: products[0].variants[0].id, quantity: 1}
      ]
    var checkoutId = checkout.id

    console.log('checkout id: ' + checkoutId)       
    console.log('line items to add: ' + lineItemsToAdd)

    client.checkout.addLineItems(checkoutId, lineItemsToAdd).then((checkout) => {
        console.log('checkout line items: ' + checkout.lineItems)
    })
})
</script>

IE不支持上述PS代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM