我试图从Stripe内部的产品电话中获得价格。我有功能工作的大部分,但是,我得到了这个错误时,添加价格。我已经尝试了Object.assign
和Object.preventExtensions
的每一种可能的排列。我很感激在这个问题上的一些帮助,因为它一直困扰着我。
export async function getProducts() {
let products = [];
const allProducts = await stripe.products.list({
limit: 20,
});
allProducts.data.forEach((product) => {
formatData(product)
.then((price) => {
console.log(price);
const retObj = Object.assign({}, product, { price });
console.log(retObj);
Object.preventExtensions(retObj);
return retObj;
})
.then((finalFormat) => {
products.push(finalFormat);
});
});
console.log(products);
return products;
}
async function formatData(product) {
console.log(product);
const checkPrice = product.default_price
? product.default_price
: "price_1Nv9YHIBI5Cn7b3ccsEn9Vpi";
const price = await stripe.prices.retrieve(checkPrice);
console.log(price);
return price.unit_amount;
}
此代码在点products.push(finalFormat)
处返回错误TypeError: Cannot add property 0, object is not extensible
。
1条答案
按热度按时间jv4diomz1#
猜测您正在对
getProducts
返回的对象执行某些操作getProducts
返回EMPTY Array,因为forEach中的代码有缺陷。这里的.then
中的代码formatData(product).then(...
不会在你return products
之前执行,因为它是异步的。试试这个
举例说明这一点
这段代码不会导致该错误,但您可以看到结果长度为零。如果您签入实际的控制台,则会有数据,这是因为它是在日志记录之后异步添加的
这个例子,我假设您在调用getProducts时正在做的事情,说明了您得到的确切错误。