Firebase初始化没有Auth - firebase.auth不是一个函数

时间:2018-01-31 21:18:06

标签: node.js firebase firebase-authentication

我无法弄清楚为什么我的一个Firebase应用程序使用auth()进行初始化,而另一个则没有。我在此处遵循了节点安装选项:https://firebase.google.com/docs/web/setup

**编辑:**为了澄清,有效的是在firebase函数中使用admin sdk。但是,我不明白如何将其连接到前端客户端sdk界面。

每当我尝试在没有它的情况下初始化的应用程序上调用任何firebase.auth()方法时,我会不断收到错误。

在没有auth()的情况下阻止我的应用初始化的原因是什么?我已经倾注了代码并相信两者都以同样的方式结合了firebase,但我必须遗漏一些东西?

导致错误的示例功能



AtomicInteger




产生的错误



int




应用1 - 初始化 我已将数据替换为xxx



AtomicInteger aldo = new AtomicInteger(1);

for (int i = 0; i < 5; i++) {
    executor.execute( () -> {
        System.out.println("This is test. N: " + aldo.getAndIncrement());
    });
}
&#13;
&#13;
&#13;

应用1 - Firebase对象的控制台日志 请注意&#34; auth&#34;存在

&#13;
&#13;
firebase.auth().onAuthStateChanged(function(user) {
    if (user) {
        console.log("User signed in!", user);
    } else {
        console.log("User NOT signed in!");
    }
});
&#13;
&#13;
&#13;

应用1 - 包括服务器端管理员功能

&#13;
&#13;
index.js:40 Uncaught TypeError: firebase.auth is not a function
    at Object.<anonymous> (index.js:40)
    at __webpack_require__ (bootstrap 06efabd01e08e38c858a:19)
    at bootstrap 06efabd01e08e38c858a:62
    at bootstrap 06efabd01e08e38c858a:62
(anonymous) @ index.js:40
__webpack_require__ @ bootstrap 06efabd01e08e38c858a:19
(anonymous) @ bootstrap 06efabd01e08e38c858a:62
(anonymous) @ bootstrap 06efabd01e08e38c858a:62
&#13;
&#13;
&#13;

应用2 - 初始化 我已将数据替换为xxx

&#13;
&#13;
var firebase = require('firebase/app');
require('firebase/auth');
var config = {
    apiKey: "xxx",
    authDomain: "xxx.firebaseapp.com",
    databaseURL: "https://xxx.firebaseio.com",
    projectId: "xxx",
    storageBucket: "xxx.appspot.com",
    messagingSenderId: "xxx"
};
firebase.initializeApp(config);
console.log("FIREBASE: ", firebase);
&#13;
&#13;
&#13;

应用2 - Firebase对象的控制台日志 请注意&#34; auth&#34;缺少

&#13;
&#13;
{__esModule: true, initializeApp: ƒ, app: ƒ, Promise: ƒ, …}
INTERNAL
:
{registerService: ƒ, createFirebaseNamespace: ƒ, extendNamespace: ƒ, createSubscribe: ƒ, ErrorFactory: ƒ, …}
Promise
:
ƒ Promise()
SDK_VERSION
:
"4.9.0"
User
:
ƒ Bk(a,b,c)
app
:
ƒ app(name)
apps
:
(...)
auth
:
ƒ (appArg)
default
:
{__esModule: true, initializeApp: ƒ, app: ƒ, Promise: ƒ, …}
initializeApp
:
ƒ initializeApp(options, name)
__esModule
:
true
get apps
:
ƒ getApps()
__proto__
:
Object
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

更新:我最近再次遇到此错误。 Firebase初始化时没有再次使用Auth(参见图片)。当我更新或重新安装我的node_modules时,它似乎偶尔会发生。

我在以下链接中发布了一个类似问题的更新答案 - 其中还列出了其他人尝试过的其他几种可能的解决方案。我的修复涉及从我的Mac中完全删除npm,nvm和节点,并使用nvm进行全新安装:firebase.auth is not a function

enter image description here

我为此奋斗了3天,尝试各种不同的方式来实现sdk,完全按照文档和许多其他示例,最后找到了一个有效的示例。这个git存储库有一个非常简单的例子,类似于我的react-router v4设置。 tylermcginnis/react-router-firebase-auth

基本上,我按照以下方式实现了

<强> firebase.js 我将firebase配置代码移动到一个单独的文件中,然后将firebase.auth导出为名为firebaseAuth的常量。

import firebase from 'firebase'

const config = {
  apiKey: "AIza....pPk",
  authDomain: "project.firebaseapp.com",
  databaseURL: "https://project.firebaseio.com",
}

firebase.initializeApp(config)

export const firebaseAuth = firebase.auth

Redux操作/使用位置 我使用redux来处理各种动作,而不是我的组件。在我的actions文件中,我正在导入firebaseAuth变量,并使用它来调用各种firebase auth函数。正如您在此处所看到的,firebaseAuth()被称为函数。

这在我的firebase项目中成功创建了用户。 (我知道所有内容都标有“signIn”,但它使用的是创建帐户功能)。

import { firebaseAuth } from '../../config/firebase'
/**
 * Sign In User
 * Signs in our end user using firebase auth
 */

export const signIn = () => {
    return (dispatch, getState) => {
        console.log("Sign In - In Progress");
        // Get the state from the redux store
        const reduxState = getState();

        let email = reduxState.form.signIn.values.email;
        let password = reduxState.form.signIn.values.password;

        firebaseAuth().createUserWithEmailAndPassword(email, password).catch(function(error) {
            // Handle Errors here.
            console.log("Login Errors: " + error.code + error.message);
            // ...
        });
    }
}

顺便说一句,我使用redux-form进行用户内容输入,而redux-thunk中间件则在动作中使用dispatch和getState。