所以,我想在專案中添加另一個 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;
所以,我的問題是,我該如何解決這個錯誤?是什么原因造成的?提前致謝。
uj5u.com熱心網友回復:
Firebase Admin 不適合在客戶端使用。當您運行該應用程式時,Firebase Admin 也會被匯入并導致該錯誤。理想情況下,您應該在一個只能在服務器端訪問的不同檔案中初始化 Firebase Admin。
查看此博客以獲取有關如何將 Firebase Admin 與 NextJS 一起使用的分步說明。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/408754.html
標籤:
