条纹结帐会话与 firebase 顶级等待错误集成
Stripe checkout session integration with firebase top-level-await error
您好,我一直在尝试使用 stripe firebase 扩展程序创建结帐会话,但我 运行 遇到了这个错误:
./pages/viewer.js
Module parse failed: top-level-await experiment is not enabled (set experiments.topLevelAwait: true 启用)
文件是用这些加载器处理的:
- ./node_modules/next/dist/build/babel/loader/index.js
您可能需要一个额外的加载器来处理这些加载器的结果。
错误:顶级等待实验未启用(设置 experiments.topLevelAwait: true 以启用它)
我不确定错误指的是什么。这对我来说是一个全新的概念。
我正在使用 next.js 框架
我的代码:
firebase.js 文件:
// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
// Your web app's Firebase configuration
const firebaseConfig = {
apiKey: "AIzaSyAIbAZGEmnB5EMpj7TTR0v0yjK2c1EYJzo",
authDomain: "comics-app-a4675.firebaseapp.com",
projectId: "comics-app-a4675",
storageBucket: "comics-app-a4675.appspot.com",
messagingSenderId: "963431498351",
appId: "1:963431498351:web:e1b078045362f3c168039a"
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
Viewer.js 文件(我使用的页面作为成功 url):
import Head from 'next/head'
import Reader from '../components/Reader';
import Header from "../components/Header";
import Feed from "../components/Feed";
import Titles from "../components/Titles"
import React, { useState, useEffect } from 'react';
import { getApp } from "@firebase/app";
import { getStripePayments } from "@stripe/firestore-stripe-payments";
import { getProducts } from "@stripe/firestore-stripe-payments";
import { createCheckoutSession } from "@stripe/firestore-stripe-payments";
import { onCurrentUserSubscriptionUpdate } from "@stripe/firestore-stripe-payments";
const app = getApp();
const payments = getStripePayments(app, {
productsCollection: "products",
customersCollection: "customers",
});
const products = await getProducts(payments, {
includePrices: true,
activeOnly: true,
});
for (const product of products) {
// ...
}
const session = await createCheckoutSession(payments, {
price: myPriceId,
});
window.location.assign(session.url);
onCurrentUserSubscriptionUpdate(
payments,
(snapshot) => {
for (const change in snapshot.changes) {
if (change.type === "added") {
console.log(`New subscription added with ID: ${change.subscription.id}`);
}
}
}
);
function viewer() {
return (
<div>
<Head>
<title>Minerva</title>
<link rel="icon" href="/favicon.ico" />
</Head>
<Header />
<Reader />
<div className="pl-28 m-8 text-white">
<h1 className="text-2xl font-extrabold">Metroid, Chapter 2</h1>
<p className="font-bold border-b">September 21st, 2021</p>
</div>
<Feed />
</div>
)
}
export default viewer
我不确定您是否在 next.config.js
中启用了 topLevelAwait
module.exports = {
webpack: (config) => {
config.experiments = config.experiments || {}
config.experiments.topLevelAwait = true
return config
},
}
您好,我一直在尝试使用 stripe firebase 扩展程序创建结帐会话,但我 运行 遇到了这个错误:
./pages/viewer.js Module parse failed: top-level-await experiment is not enabled (set experiments.topLevelAwait: true 启用) 文件是用这些加载器处理的:
- ./node_modules/next/dist/build/babel/loader/index.js 您可能需要一个额外的加载器来处理这些加载器的结果。 错误:顶级等待实验未启用(设置 experiments.topLevelAwait: true 以启用它)
我不确定错误指的是什么。这对我来说是一个全新的概念。
我正在使用 next.js 框架
我的代码:
firebase.js 文件:
// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
// Your web app's Firebase configuration
const firebaseConfig = {
apiKey: "AIzaSyAIbAZGEmnB5EMpj7TTR0v0yjK2c1EYJzo",
authDomain: "comics-app-a4675.firebaseapp.com",
projectId: "comics-app-a4675",
storageBucket: "comics-app-a4675.appspot.com",
messagingSenderId: "963431498351",
appId: "1:963431498351:web:e1b078045362f3c168039a"
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
Viewer.js 文件(我使用的页面作为成功 url):
import Head from 'next/head'
import Reader from '../components/Reader';
import Header from "../components/Header";
import Feed from "../components/Feed";
import Titles from "../components/Titles"
import React, { useState, useEffect } from 'react';
import { getApp } from "@firebase/app";
import { getStripePayments } from "@stripe/firestore-stripe-payments";
import { getProducts } from "@stripe/firestore-stripe-payments";
import { createCheckoutSession } from "@stripe/firestore-stripe-payments";
import { onCurrentUserSubscriptionUpdate } from "@stripe/firestore-stripe-payments";
const app = getApp();
const payments = getStripePayments(app, {
productsCollection: "products",
customersCollection: "customers",
});
const products = await getProducts(payments, {
includePrices: true,
activeOnly: true,
});
for (const product of products) {
// ...
}
const session = await createCheckoutSession(payments, {
price: myPriceId,
});
window.location.assign(session.url);
onCurrentUserSubscriptionUpdate(
payments,
(snapshot) => {
for (const change in snapshot.changes) {
if (change.type === "added") {
console.log(`New subscription added with ID: ${change.subscription.id}`);
}
}
}
);
function viewer() {
return (
<div>
<Head>
<title>Minerva</title>
<link rel="icon" href="/favicon.ico" />
</Head>
<Header />
<Reader />
<div className="pl-28 m-8 text-white">
<h1 className="text-2xl font-extrabold">Metroid, Chapter 2</h1>
<p className="font-bold border-b">September 21st, 2021</p>
</div>
<Feed />
</div>
)
}
export default viewer
我不确定您是否在 next.config.js
中启用了topLevelAwait
module.exports = {
webpack: (config) => {
config.experiments = config.experiments || {}
config.experiments.topLevelAwait = true
return config
},
}