[英]Shopify Buy SDK — Add line items error
我正在使用shopify buy SDK創建自定義店面:
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.