Estoy tratando de almacenar usuarios en un backend de firebase cuando uso la próxima autenticación. No puedo evitar este error.
Usando el adaptador FIREBASE next-auth.
https://next-auth.js.org/adapters/firebase : DOCUMENTOS QUE SIGO
CLIENTE DE FIREBASE
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;[...siguiente].js
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), });errar
ReferenceError: Cannot access 'app' before initializationApuesto a que necesita cambiar las líneas de la siguiente manera, porque no tiene una variable app cuando crea análisis:
const app = initializeApp(firebaseConfig); const analytics = getAnalytics(app);Nuestro problema fue un poco diferente. Si ha desarrollado una función en la nube que tiene una función referenciada internamente, como esta:
export.foo = functions.https.onCall(async () => { // Some functionality here that references internalFunc const internalFunc = () => { ... } } Ese internalFunc no podrá ser referenciado.
La solución para nosotros es crear un archivo utilities.js en nuestro directorio de funciones y luego exportar la función internalFunc desde ese archivo. Luego, importe esa función al script donde está implementando la función en la nube.
¡Espero que esto ayude a alguien!