firebase.auth n'est pas une fonction
Je suis en utilisant Webpack avec firebase et firebase-admin.
Pour installer firebase j'ai couru
npm install --save firebase
Je suis de l'importation à l'aide de firebase,
import * as firebase from 'firebase/app'
import 'firebase/auth'
J'ai aussi essayé
import * as firebase from 'firebase'
Et j'ai essayé
const firebase = require('firebase')
Comme suggéré dans web guide de mise en route
Lorsque j'essaie d'utiliser firebase.auth()
mais j'ai une erreur
de la console.js:32 TypeError: firebase.auth n'est pas une fonction
Lorsque j'utilise le débogueur pour inspecter firebase
je vois qu'il en fait ne pas avoir un auth
fonction:
> firebase
{__esModule: true, initializeApp: ƒ, app: ƒ, Promise: ƒ, …}
Comment puis-je obtenir auth() inclus comme une fonction à l'aide de webpack?
Grâce.
Edit:
C'est pas un duplicata de la question dans le commentaire. Cette question se réfère à une méthode qui est un membre du service de demenagement, pas le service auth.
Êtes-vous sûr d'avoir la dernière version de Firebase installé? Ils faire des mises à jour quotidiennes, donc je toujours vérifier ma version est la plus récente disponible. Firebase Communiqués
pouvez-vous confirmer que vous avez correctement initialisé le firebase application? d'autres bits de travail, comme la base de données.
Si vous n'êtes pas sûr, j'ai écrit un guide pour configurer ici joshpitzalis.svbtle.com/setup et une authentification spécifique ici joshpitzalis.svbtle.com/auth . Si vous ne parvenez toujours pas à nous le faire savoir.
J'ai eu le même problème, j'ai fait de fils d'installer et de correction de l'erreur.
OriginalL'auteur Eric Conner | 2018-02-03
Vous devez vous connecter pour publier un commentaire.
Ok, fixée par la suppression de mon
node_modules
répertoire et tout réinstaller.Aussi je suis de l'importation de firebase comme suit:
Je ne sais pas.
Le travail pour moi aussi, mais je n'ai pas besoin de réinstaller node_modules. Merci.
La réinstallation de
node_modules
a fait le tour pour moi, merci!Cela n'a pas fonctionné pour moi, et semble être un problème qui se produit lorsque vous avez à la fois firebase et firebase-admin installé dans le même package. La rétrogradation à la [email protected] a travaillé pour moi, la question figurant à [email protected]. Le problème est en cours de discussion sur la firebase repo ici](github.com/firebase/firebase-js-sdk/issues/752).
Peut confirmer @isTravis de l'information résolu mon problème. J'ai eu les DEUX firebase 5.4.1 avec firebase-admin 6.0.0 dans mon colis.json.
npm update firebase
me mis niveau vers 5.5.4 et la firebase.auth() n'est pas une fonction du problème ont commencé à apparaître. Le firebase-admin paquet n'était même pas utilisé dans mon application j'ai doncnpm uninstall firebase-admin
et tout a commencé à travailler une fois de plus.OriginalL'auteur Eric Conner
Je sais que vous avez réglé votre problème, mais il n'y a pas de vraie réponse au problème original.
Le problème n'était pas avec l'
node_modules
, c'est avec la manière que vous avez été d'importer le composant.Lorsque vous exportez un composant ES6 normalement
export default () => { console.log('default component export'); };
default
est le mot clé ici, lors de l'importation d'un composant ES6 commeimport firebase from 'firebase'
il accapare ladefault
propriété de l'objet exporté.En gardant à l'esprit l'exemple ci-dessus, voici ce que vous avez fait de mal.
À l'aide de ES6:
À l'aide de ES5:
Note le
.default
Espère que cela aide à expliquer ce qui n'allait pas dans la première place.
Ne fonctionne pas quand j'ai essayé. Essayé sur le nœud, pas sur le navigateur
Je vois. J'ai essayé dans le navigateur. Je pensais que le problème peut avoir été webpack liés et c'est pourquoi j'ai été en utilisant le navigateur
"préférez toujours la non culte du cargo de réponse". Donc, si je comprends: (a) re-installation de paquets est un leurre. (b) soit
require ('firebase')
puisfirebase.default.auth
OUrequire(firebase/auth
)` puisfirebase.auth
. +1Semble dépendre de l'environnement que vous utilisez. J'ai testé Joao de réponse et il ne fonctionne pas dans mon environnement. Je suis coincé avec quelques fous Babel Webpack Version 1 manigances. Il a été résolu pour moi de réinstaller les paquets, et que la réponse a été upvoted plusieurs fois, de sorte que les moyens il a probablement travaillé pour les autres. DONC, l'auto-attribué du bounty à cette réponse. En tout cas, il semble que Joao réponse ne aider à clarifier certaines choses à propos de javascript importations dans ce nouveau monde, si elle ne résout pas le problème que j'ai rencontré.
OriginalL'auteur Joao Lopes
J'ai continué à obtenir une erreur qui dit
J'ai eu l'auth objet et la chose que j'ai fait différemment a été d'installer les modules dans un ordre différent.
La première fois que j'ai installé les modules (c'est quand l'objet auth n'apparaît pas):
J'ai supprimé le mécanisme national de prévention de dossier et a commencé à partir de zéro, bien que cette fois, j'ai inversé l'ordre d'installation:
Je n'ai rien fait d'autre. J'ai simplement inversé l'ordre d'installation par installation de firebase premier et firebase-admin seconde.
J'espère que cela fonctionne pour d'autres personnes.
Vous pouvez en lire plus à ce sujet ici
Je sais que c'est très étrange. J'ai eu un mal de tête avec ce depuis des mois, fait un tas de recherche, rien n'a fonctionné. Je viens de hasard a décidé de l'essayer et ça a fonctionné. C'était littéralement une chance de deviner. ♂️
D'accord. C'est étrange, mais il a travaillé.
A fonctionné pour moi, merci! Plus de détails ici: github.com/firebase/firebase-js-sdk/issues/...
lol heureux de vous avoir aidé
OriginalL'auteur Lance Samaria
juste ajouter >
dans votre projet
OriginalL'auteur abderrezague mohamed
Je suis tombé sur cette. Mon problème est le mécanisme national de prévention module @firebase a été installée ainsi que le firebase module. Quand je firebase dans mon code JavaScript ‘require(“firebase”)’, webpack livré @firebase au lieu de cela, pour une raison quelconque.
@firebase ne comprend pas auth, base de données etc. par défaut...c'est modulaire, de sorte que vous pouvez exiger d'eux séparément. Par conséquent, j'ai reçu l'erreur ci-dessus lorsque j'ai essayé d'appeler auth().
Pour le fixer, vous pouvez supprimer @firebase...ou simplement d'ajouter le chemin d'accès complet à la bonne firebase quand vous en avez besoin comme
require(‘/path/to/node_modules/firebase/firebase.js’)
@firebase
est installé (ce qui n'est pas un module lui-même; c'est un "champ d'action", avec des modules tels queapp
oudatabase
en vertu de cette portée). c'est là que la plupart de la logique pour les différents firebase modules est mis en œuvre. Par la voie, que voulez-vous dire par votre suggestion pour "supprimer"@firebase
?OriginalL'auteur Troy
Eu le même problème, je pense que c'est parce que des versions des ennuis.
- Je le résoudre par la suppression de
node_modules
et tous leswebpack
généré affaires et de prendre les versions de ici.Btw, je pense que c'est un comportement très étrange, car il doit travailler comme dans la documentation officielle.
OriginalL'auteur CenyGG
Ce. J'ai couru ce tout en travaillant par le biais de William Candillon de L'Ajout De Firebase Pour Réagir Natif tutoriel...
Pensées: Il ya beaucoup d'aimer au sujet de Firebase. Mais l'import/export, nommé vs par défaut et la gestion des versions semble apporter beaucoup de gens beaucoup d'inutiles coeur mal. <-- je le dis avec des larmes coulaient sur mon visage et un trou dans mon cœur où l'amour de développement mobile & enfance malheureuse existait à peine quelques heures auparavant.
Dit simplement: j'ai eu
firebase.auth is not a function
.Est allé à la chasse si node_modules, supprimé, re-fils d, lire des blogs, essayé de l'importation, comme nommé par défaut, nécessitant des modules séparés à la
require('firebase/auth');
en vertu de l'importation par défaut de firebase lui-même, etc etc etc (il ne devrais vraiment pas être dur). Aussi, pourquoi ne Google pas réagir de la documentation? C'est en 2018. Sont des gens sérieux encore de mettre des balises de script HTML dans leur avant la fin?Solution actuelle => à la fin, j'ai tiré de toutes mes config et
firebase.initializeApp(config)
dans mon top niveau app.js. Je vais devoir trouver le temps plus tard de comprendre pourquoi le "@firebase" module d'authentification ne peut pas être importé. Ou pourquoi c'est même là? Ai-je besoin? Pourquoi n'est-il pas le tout enveloppé dans le "fil d'ajouter firebase' module?De toute façon que j'avais de mes conseils. Faire fonctionner au plus haut niveau en premier. Puis la ruche-off, les informations d'identification dans un fichier séparé plus tard. Et "Ne buvez pas de bière blonde. Il gonfle-vous et IPA est infiniment plus agréable."
OriginalL'auteur NewbieAid
Ma Solution: Supprimer Complètement Nœud, NPM, NVM & Re-Installer
Ce problème m'est arrivé à quelques reprises dans le passé (à chaque fois que j'ai essayé jusqu'mise à jour ou l'installation de mon node_modules). J'ai littéralement tout essayé ci-dessus. Il semblait toujours au hasard de commencer à travailler et j'ai été incapable de l'usage de tout documenté solution la prochaine fois que l'erreur s'est produite.
Je pense que j'ai peut-être eu quelques de report de questions depuis que j'ai commencé à l'aide de Firebase dans les premiers jours quand il y avait un peu bizarre hacks que j'ai fait dans macOS pour obtenir firebase pour fonctionner correctement.
Cette solution essentiellement complètement élimine toute trace de node /ngp /nvm à partir de votre Mac, et ré-installe à utiliser la version exacte de nœud qui firebase s'exécute. Il utilise nvm donc, si vous avez d'autres projets qui nécessitent un nœud différent des versions, vous pouvez basculer entre un nœud versions à la volée.
1. Supprimer Un Nœud Existant Modules
Dans votre projet de dossier, supprimer tout
node_modules
les dossiers que vous avez.2. Supprimer Le Nœud
C'est le tutoriel, j'ai utilisé pour supprimer manuellement nœud. Dans les premiers jours, je me souviens d'avoir à changer quelque chose à nœud installer dans un autre répertoire (en raison de problèmes d'autorisation), et j'ai également fait des recherches supplémentaires sur mon ordinateur afin de supprimer ces fichiers et dossiers à partir d'autres domaines.
3. Supprimer MNP
C'est le tutoriel, j'ai utilisé pour s'assurer que je l'ai enlevé les traces de la ngp
4. Supprimer NVM
C'est le tutoriel, j'ai utilisé pour supprimer manuellement NVM
5. Redémarrez
Après la suppression de tout et de redémarrer bash (ou le redémarrage de votre Mac comme je l'ai fait pour la sécurité) - taper
node
,npm
, etnvm
dans la console devrait tout simplement le retourcommand not found
.6. Re-Installer le Nœud du mécanisme à l'Aide de NVM Seulement
NVM vous permet d'installer une version spécifique de nœud. Depuis que je suis en utilisant le firebase-fonctions nœud 8 runtime (beta), j'ai installé leur liste de la version cible du nœud 8. (a partir de maintenant, nœud 8.11.1). C'est encore en version bêta, firebase fonctions utilise nœud 6.11.5 que de la rédaction de ce document.
Instructions pour l'installation de nœud, mnp à l'aide de nvm
7. Mise à jour de MNP Manuellement
NVM installé une ancienne version de la ngp. Cette commande met à jour la NGP dans sa dernière version.
npm install npm@latest -g
8. Installer Vos Modules
Redémarrer votre terminal app juste au cas où, puis retour à votre dossier de projet et exécutez le
npm install
commande.9. Re-Build & Re-Déployer
Si vous utilisez webpack, re-construire votre projet. Puis de déployer ou de servir localement.
Ce processus a résolu le problème pour moi. Espérons que cela fonctionne pour vous et vous n'avez pas à faire toute bidouille des trucs. Il semble que tout ce que j'avais à faire était d'un peu de nettoyage.
OriginalL'auteur Matthew Rideout