【发布时间】:2025-12-29 00:05:12
【问题描述】:
我的 firebase Nuxt 应用最近从 SPA 模式转换为 SSR。在 SPA 模式下一切正常,但是当我尝试转换它时,它产生了很多错误。我试图一一解决它们,但我遇到了错误ReferenceError 'location' was not defined。我想运行我的模拟器,因为如果它完全在 SSR 模式下运行,我想测试我的其他功能。
import firebaseTmp from "firebase/app";
import firebaseErrorsJa from "~/plugins/firebaseErrorsJa";
import "firebase/storage";
import "firebase/firestore";
import 'firebase/auth';
import 'firebase/functions';
const config = process.env.firebaseConfig;
if (!firebaseTmp.apps.length) {
firebaseTmp.initializeApp(config);
}
const db = firebaseTmp.firestore();
const functions = firebaseTmp.functions();
const firebase = firebaseTmp;
const firestore = firebaseTmp.firestore();
const storage = firebaseTmp.storage();
const auth = firebaseTmp.auth();
const firestoreTimestamp = firebaseTmp.firestore.Timestamp;
const serverTimestamp = firebaseTmp.firestore.FieldValue.serverTimestamp();
const firebaseErrors = firebaseErrorsJa;
if (location.hostname === "localhost") {
db.settings({
host: "localhost:8000",
ssl: false
});
functions.useEmulator("localhost", 5001);
auth.useEmulator('http://localhost:9099/');
}
export { db, firebase, firestore, auth, storage, firestoreTimestamp, serverTimestamp, functions, firebaseErrors }
我导入了几乎所有的库,但仍然无法正常工作。
注意:这只发生在 SSR 模式下。这是否意味着location在SSR模式下不起作用?
我试图删除其中包含“位置”的代码块。它在本地运行良好,但是当我尝试运行其他功能时,它会生成CORS error。它访问我们部署函数时使用的链接。
https://us-central1-talkfor-dev.cloudfunctions.net/v1-auth-updateUser
- 这是控制台中显示的链接
我的预期是us-central1-talkfor-dev.cloudfunctions.net 将是localhost:5000,因为我们使用的是本地开发。
你知道为什么会这样吗?
【问题讨论】: