Firestore:GrpcConnection RPC“写入”流 0x48b21b62 错误。代码:13 消息:13 内部:收到 RST_STREAM,代码为 2

问题描述 投票:0回答:2

当我尝试插入文档时,Firebase 模拟器出现此错误。我是 Firebase 的新手,所以可能我在做一些愚蠢的事情,但我无法弄清楚。

注意:我从网络文档版本9中获取了代码示例,因为node.js的代码告诉我数据库中没有收集功能。所以我遵循了这个帖子

中的建议

这是我的 Firebase 依赖项:

zied@zied-N752VX:~/Work/WS/linkedinCv-back$ pnpm view firebase dependencies
{
  '@firebase/app': '0.9.7',
  '@firebase/app-compat': '0.2.7',
  '@firebase/app-types': '0.9.0',
  '@firebase/auth': '0.22.0',
  '@firebase/auth-compat': '0.3.7',
  '@firebase/database': '0.14.4',
  '@firebase/database-compat': '0.3.4',
  '@firebase/firestore': '3.10.0',
  '@firebase/firestore-compat': '0.3.6',
  '@firebase/functions': '0.9.4',
  '@firebase/functions-compat': '0.3.4',
  '@firebase/installations': '0.6.4',
  '@firebase/installations-compat': '0.2.4',
  '@firebase/messaging': '0.12.4',
  '@firebase/messaging-compat': '0.2.4',
  '@firebase/storage': '0.11.2',
  '@firebase/storage-compat': '0.3.2',
  '@firebase/performance': '0.6.4',
  '@firebase/performance-compat': '0.2.4',
  '@firebase/remote-config': '0.4.4',
  '@firebase/remote-config-compat': '0.2.4',
  '@firebase/analytics': '0.9.5',
  '@firebase/analytics-compat': '0.2.5',
  '@firebase/app-check': '0.6.4',
  '@firebase/app-check-compat': '0.3.4',
  '@firebase/util': '1.9.3'
}

我的初始化代码如下

import { initializeApp } from "firebase/app";
// import { getFirestore, connectFirestoreEmulator } from 'firebase-admin/firestore';

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
// 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 firebaseConfig = {
    apiKey: "XXXXX",
    authDomain: "linkedincv-bdbec.firebaseapp.com",
    projectId: "linkedincv-bdbec",
    storageBucket: "linkedincv-bdbec.appspot.com",
    messagingSenderId: "472466845815",
    appId: "XXXXX",
    measurementId: "XXXXX",
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
// const db = getFirestore(app);

const db = getFirestore(app);
connectFirestoreEmulator(db, 'localhost', 4000);

export {db}

触发错误的代码如下:

import {db} from '../../../lib/middleware/firebaseInit'
import { doc, setDoc } from "firebase/firestore";

export async function POST({request}) {
    try {
        const payload = await request.json();
        const uniqueUrl = payload.uniqueUrl;

        // Store the 'uniqueUrl' field in Firestore
        const docRef = await setDoc(doc(db, "json_cv", "testId"), payload)
        // Return the document ID of the stored object
        return {
            body: JSON.stringify({ documentId: docRef.id }),
            headers: { 'Content-Type': 'application/json' },
            status: 200
        };
    } catch (error) {
        // Handle any errors that occur during processing
        console.error(error);
        return {
            body: JSON.stringify({ error: 'Failed to store unique URL' }),
            headers: { 'Content-Type': 'application/json' },
            status: 500
        };
    }
}

我看到一些人更新了 firebase-functions 以使其正常工作,但这似乎不适用于我,因为我已经使用了版本 9。

这是我收到的错误:

[2023-04-13T06:09:01.286Z]  @firebase/firestore: Firestore (9.19.1): GrpcConnection RPC 'Write' stream 0x48b21b62 error. Code: 13 Message: 13 INTERNAL: Received RST_STREAM with code 2 triggered by internal client error: Protocol error 
firebase
2个回答
1
投票

这个问题的答案在我问的另一个问题中

长话短说:在node.js中运行时,我们必须使用

"firebase-admin"
中的库,而不是
"firebase"

中的库

此外,模拟器未初始化,只需在初始化 firebase 之前设置环境变量即可。


0
投票

如果程序在模拟器上下文中运行,这对 Firebase 确实有帮助。

例如,使用 Firestore 模拟器运行 vitest:

firebase emulators:exec --only firestore "vitest"

对我来说效果很好,无需切换到

firebase-admin

© www.soinside.com 2019 - 2024. All rights reserved.