我收到错误信息'Uncaught TypeError:firebase.auth不是一个函数'。
我的代码运行正常,然后我实现了我的客户端api,发现他们的api已经使用并初始化了另一个firebase应用。因此,由于无法以常规方式初始化firebase应用程序(即firebase.initializeApp(config)),因此按照以下文档进行初始化。 (这会导致错误)
var configOther = {
apiKey: "xxxx",
authDomain: "xxxx",
databaseURL: "xxxx",
projectId: "xxxx",
storageBucket: "xxxx",
messagingSenderId: "xxxx"
};
var firebaseOther = firebase.initializeApp(configOther, "firebaseOther");
console.log("auth: ", firebase.auth(firebaseOther)); //"Uncaught TypeError: firebase.auth is not a function"
关于我在这里做错什么的任何想法?非常感谢。
注意-我还尝试了以下速记符号:
firebaseOther.auth()
代替
firebase.auth(firebaseOther)
但这会导致相同的错误。
答案 0 :(得分:0)
您可能跳过了在页面中包含firebase-auth脚本的步骤,如documentation所述:
<!-- Firebase App is always required and must be first -->
<script src="https://www.gstatic.com/firebasejs/5.9.1/firebase-app.js"></script>
<!-- Add additional services that you want to use -->
<script src="https://www.gstatic.com/firebasejs/5.9.1/firebase-auth.js"></script>
答案 1 :(得分:0)
唯一的解释是,页面中的某处还有另一个<script>
标签,引用了firebase-app.js
文件,例如
<script src="https://www.gstatic.com/firebasejs/5.9.1/firebase-app.js"></script>
在您添加firebase.js
或firebase-app.js
和firebase-auth.js
后,此标记将显示在 之后。
发生的情况是,包含firebase-app.js
会设置全局firebase
变量的值,从而覆盖先前设置的所有内容。
解决方案是删除重复的Firebase脚本包含项,或者至少确保最后包含要激活的脚本。
答案 2 :(得分:0)
我有一个类似的问题,可以通过删除文档提供的HTML中的defer
来解决:
<script src="https://www.gstatic.com/firebasejs/7.17.2/firebase-app.js"></script>
<script defer src="https://www.gstatic.com/firebasejs/7.17.2/firebase-auth.js"></script>
<script defer src="https://www.gstatic.com/firebasejs/7.17.2/firebase-firestore.js"></script>