Estoy usando Webpack con firebase y firebase-admin.
Para instalar firebase ejecuté:
npm install --save firebaseEstoy importando firebase usando:
import * as firebase from 'firebase/app' import 'firebase/auth'También probé:
import * as firebase from 'firebase'Y probé:
const firebase = require('firebase')Como se sugiere en la guía de inicio web .
Sin embargo, cuando trato de usar firebase.auth() un error:
console.js:32 TypeError: firebase.auth no es una función
Cuando uso el depurador para inspeccionar firebase , veo que, de hecho, no tiene una función de auth :
> firebase {__esModule: true, initializeApp: ƒ, app: ƒ, Promise: ƒ, …} ¿Cómo puedo incluir auth() como una función usando el paquete web?
Lo solucioné eliminando mi directorio node_modules y reinstalando todo.
También estoy importando firebase así:
import firebase from 'firebase' require('firebase/auth')El problema no estaba en los node_modules , sino en la forma en que estabas importando el componente.
Cuando exporta un componente de forma ES6, normalmente export default () => { console.log('default component export'); };
default es la palabra clave aquí, cuando importa un componente ES6 de manera similar a import firebase from 'firebase' , toma la propiedad default del objeto exportado.
Teniendo en cuenta el ejemplo anterior, esto es lo que has hecho mal.
Usando ES6:
import * as firebase from 'firebase' console.log(firebase.auth) // Undefined console.log(firebase.default.auth) // FunctionUsando ES5:
var firebase = require('firebase') console.log(firebase.auth) // Undefined console.log(firebase.default.auth) // Function Tenga en cuenta el .default
Seguía recibiendo un error que decía
"TypeError: firebase.auth no es una función"
Obtuve que apareciera el objeto de autenticación y lo que hice de manera diferente fue instalar los módulos en un orden diferente.
La primera vez que instalé los módulos (esto es cuando el objeto de autenticación no aparecía):
// this seems to confuse things with the auth object when installed in this order $ npm install firebase-admin --save $ npm install firebase --saveEliminé la carpeta npm y comencé desde cero aunque esta vez invertí el orden de instalación:
// for some reason this worked and now I can access the auth object $ npm install firebase --save $ npm install firebase-admin --saveNo hice nada más. Simplemente invertí el orden de instalación instalando firebase primero y firebase-admin en segundo lugar.
Espero que esto funcione para otras personas.