首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NextAuth Firebase后端"ReferenceError:无法在初始化前访问'app‘“

NextAuth Firebase后端"ReferenceError:无法在初始化前访问'app‘“
EN

Stack Overflow用户
提问于 2021-10-27 11:11:06
回答 2查看 638关注 0票数 2

在使用下一个版本时,我试图将用户存储在一个防火墙后端上--我无法避免这个错误

使用next-auth FIREBASE适配器。

https://next-auth.js.org/adapters/firebase 后面的文档IM

防火墙客户端

代码语言:javascript
复制
import firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";

// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import { getAnalytics } from "firebase/analytics";

// Your web app's Firebase configuration
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
  apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
  authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
  projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
  storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
  measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASURMENT_ID,
};

// Initialize Firebase
const analytics = getAnalytics(app);
const app = initializeApp(firebaseConfig);

export default firebase;

...nextauth.js

代码语言:javascript
复制
import NextAuth from "next-auth";
import { FirebaseAdapter } from "@next-auth/firebase-adapter";
import firebaseClient from "../../../firebase/FirebaseClient";
import GoogleProvider from "next-auth/providers/google";

import firebase from "firebase/app";
import "firebase/firestore";

const firestore = (firebase.apps[0] ?? firebaseClient).firestore();

export default NextAuth({
  // Configure one or more authentication providers
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
  ],
  adapter: FirebaseAdapter(firestore),
});

错误

代码语言:javascript
复制
ReferenceError: Cannot access 'app' before initialization
EN

回答 2

Stack Overflow用户

发布于 2021-10-27 13:00:27

我敢打赌,您需要按以下方式切换行,因为在创建分析时没有app变量:

代码语言:javascript
复制
const app = initializeApp(firebaseConfig);
const analytics = getAnalytics(app);
票数 3
EN

Stack Overflow用户

发布于 2022-04-01 15:52:37

替代问题:内部引用函数

我们的问题有点不同。如果您已经开发了一个具有内部引用功能的云函数,如下所示:

代码语言:javascript
复制
export.foo = functions.https.onCall(async () => { 
// Some functionality here that references internalFunc

const internalFunc = () => { ... }
}

internalFunc将无法被引用。

我们的解决方案是在函数目录中创建一个utilities.js文件,然后从该文件导出internalFunc。然后,将该函数导入到部署云函数的脚本中。

希望这能帮到别人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69737580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档