Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 Fireba

Posted

技术标签:

【中文标题】Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 FirebaseFirestore【英文标题】:Stripe and Firebase: FirebaseError: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore 【发布时间】:2021-12-28 23:19:49 【问题描述】:

我正在尝试在我的新 Firebase 应用 (React) 上设置条带。我正在使用 12 天前发布的新版 Firebase (9) 和新的 Stripe 集成:

https://www.npmjs.com/package/@stripe/firestore-stripe-payments

我在这里要做的是为订阅加载条带托管的结帐。

这是代码:

import React,  useEffect  from 'react'
import  createCheckoutSession  from "@stripe/firestore-stripe-payments";
import  payments  from './Firebase'

export default function Stripetest(props) 


    async function checkout(e) 
        e.preventDefault();
        try 
            const session = await createCheckoutSession(payments, 
                    price: "price_1JwyWZIweuKs6S3NBDjBqiiw",
            );
            window.location.assign(session.url);
         catch (e) 
            console.log(e);
        
        
    
        

    

    return (
        <>
            <button onClick=checkout>Checkout</button>
        </>
    )


这是导出“付款”的 Firebase.js:

// Import the functions you need from the SDKs you need
import  initializeApp  from "firebase/app";
import  getAnalytics  from "firebase/analytics";
import  getFirestore, collection, getDocs  from 'firebase/firestore';
import  getAuth  from 'firebase/auth';
import  getStripePayments  from "@stripe/firestore-stripe-payments";
import  getApp  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
// For Firebase JS SDK v7.20.0 and later, measurementId is optional

const firebaseApp = initializeApp(
 apiKey: "AIzaSxxxxxxxxxx",
 authDomain: "bxxxxxxxxxx6.firebaseapp.com",
 projectId: "bxxxxxxxx6",
 storageBucket: "xxxxxxxx.appspot.com",
 messagingSenderId: "xxxxxxxxxxxxx",
 appId: "1:xxxxxxx",
 measurementId: "G-Kxxxxx"
);


export const db = getFirestore(firebaseApp)
export const auth = getAuth(firebaseApp)
export default firebaseApp;

const app = getApp();

export const payments = getStripePayments(app, 
 productsCollection: "products",
 customersCollection: "customers"
);

我在“getStripePayments(APP, ”) 中尝试了“app”和“firebaseApp”,但是当我点击结帐按钮时,总是出现同样的错误:

FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 FirebaseFirestore

【问题讨论】:

看来您不是唯一遇到此问题的人。我建议你在这个 GitHub 问题上添加评论,因为它似乎是库中的一个错误:github.com/stripe/stripe-firebase-extensions/issues/304 是的,这是一个错误。现在他们已经修好了! 【参考方案1】:

我从以下位置降级:

"@stripe/firestore-stripe-payments": "0.0.4",

"@stripe/firestore-stripe-payments": "0.0.3",

package.json 中,错误停止发生,现在一切正常

【讨论】:

以上是关于Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 Fireba的主要内容,如果未能解决你的问题,请参考以下文章

Android Firebase 和 Stripe 集成

使用 React Native/Stripe/Firebase 一次性付款

使用 Firebase HTTP 函数(Firebase、Stripe OAuth、React (JSX) 前端)将授权代码返回到 Stripe

从 Firebase Cloud Function 连接到 Stripe 时出错

Firebase + stripe + react native 通知客户端 firebase 功能已完成

Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 Fireba