【问题标题】:Firebase multiple "apps" - client side and server sideFirebase 多个“应用程序” - 客户端和服务器端
【发布时间】:2022-01-09 18:31:48
【问题描述】:

所以,我想在项目中添加另一个 firebase 应用。我已经为 SSR (firebase-admin) 准备了一个,因此服务器可以预渲染站点。现在我想添加 firebase@8,这样我就可以在客户端开始使用它,然后再对其应用 firestore 规则。问题是,当我尝试使用它时出现此错误:

/node_modules/@google-cloud/storage/build/src/bucket.js:22:0
Module not found: Can't resolve 'fs'

Import trace for requested module:
./node_modules/@google-cloud/storage/build/src/index.js
./node_modules/firebase-admin/lib/storage/storage.js
./node_modules/firebase-admin/lib/app/firebase-namespace.js
./node_modules/firebase-admin/lib/default-namespace.js
./node_modules/firebase-admin/lib/index.js
./firebase/config.js
./firebase/createDocument.js
./components/form/Form.js
./pages/opinia/index.js

https://nextjs.org/docs/messages/module-not-found

这是我的配置文件:

import * as admin from 'firebase-admin';
import firebase from 'firebase';
import 'firebase/firestore';

// initialize firebase on CLIENT
const firebaseConfig = {
  apiKey: process.env.FIREBASE_KEY,
  authDomain: process.env.FIREBASE_DOMAIN,
  projectId: process.env.FIREBASE_ID,
  storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.APP_ID,
};

export const clientApp = initializeApp(firebaseConfig);

// firestore
export const projectFirestoreClient = firebase.firestore(clientApp);

// timestamp
export const timestampClient = firebase.firestore.Timestamp;

// initialize firebase on SERVER
if (!admin.apps.length) {
  const serviceAccount = require('./firebase-adminsdk.json');

  admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
  });
}

// firestore
export const projectFirestoreAdmin = admin.firestore();

// timestamp
export const timestampAdmin = admin.firestore.Timestamp;

所以,我的问题是,我该如何解决这个错误?是什么原因造成的?提前致谢。

【问题讨论】:

    标签: javascript reactjs firebase next.js firebase-admin


    【解决方案1】:

    Firebase 管理员不适用于客户端。当您运行该应用程序时,Firebase Admin 也会被导入并导致该错误。理想情况下,您应该在一个只能在服务器端访问的不同文件中初始化 Firebase Admin。

    结帐this blog 以获取有关如何将 Firebase Admin 与 NextJS 一起使用的分步说明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 2019-03-18
      相关资源
      最近更新 更多