gpt4 book ai didi

javascript - Shopify Buy SDK — 添加行项目错误

转载 作者:行者123 更新时间:2023-11-29 18:56:39 25 4
gpt4 key购买 nike

我正在使用 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 执行时未设置。

您需要使用 promise 来创建序列。你可以阅读它here .带有 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>

附言上面的代码是not supported in IE

关于javascript - Shopify Buy SDK — 添加行项目错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49227923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com