javascript - 带有 Next.js 的 Firebase Analytics - 未定义窗口
问题描述
我正在尝试在 Next.js (firebase v9) 中实现和导出 firebase 分析模块
我收到以下代码片段的错误“ReferenceError:未定义窗口” 。以前的所有功能都运行良好。
任何想法如何解决这一问题?
import { initializeApp, getApps, getApp } from "firebase/app";
import { getAnalytics } from "firebase/analytics";
import { getAuth } from 'firebase/auth'
import { getFirestore } from '@firebase/firestore'
const firebaseConfig = {
//...
};
// Initialize Firebase
const app = !getApps().length ? initializeApp(firebaseConfig) : getApp();
const auth = getAuth();
const db = getFirestore(app)
// try to add analytics
const analytics = getAnalytics(app)
export {auth, db, analytics}
解决方案
NextJS:
import {initializeApp} from 'firebase/app';
import {getFirestore} from 'firebase/firestore';
import {getAnalytics} from 'firebase/analytics';
const firebaseConfig = JSON.parse(
process?.env?.FIREBASE_CONFIG ?? '{}',
);
let analytics; let firestore;
if (firebaseConfig?.projectId) {
// Initialize Firebase
const app = initializeApp(firebaseConfig);
if (app.name && typeof window !== 'undefined') {
analytics = getAnalytics(app);
}
// Access Firebase services using shorthand notation
firestore = getFirestore();
}
export {analytics, firestore};
推荐阅读
- ocaml - 如何在 OCaml 中编写案例列表模式匹配?
- arrays - 如何根据 bash 中的数组名称执行不同的操作?
- sql-server - 运行 exec 工作的 SQL 存储过程在 sp_executesql 空白的情况下运行
- bash - 如何将单引号作为别名复合命令的一部分转义?
- mailchimp - Mailchimp - 如何创建段的自定义段
- wso2 - 从 Integration Studio 添加 OM 元素属性
- spring - 我必须为我的 Spring Batch Service 编写一个测试用例。任何人都可以帮助我吗?
- node.js - 移动 Yeoman 办公室 SSO 客户端机密
- javascript - ASP.NET - 如何在转发器中编写转发器
- vue.js - SockJS 连接失败或在连接前关闭