Javascript 将firebaseui CDN与nuxt.js集成,firebase未定义错误
我正在致力于将本地化的firebaseui与nuxt.js(ssr)集成。但我遇到了一个“firebase未定义”错误。我不熟悉ssr和nuxt.js,我真的希望任何人都能解释为什么这个设置不起作用。感谢您的帮助 firebaseui指令: nuxt.config.js(相关文件的一部分) 插件/firebase.jsJavascript 将firebaseui CDN与nuxt.js集成,firebase未定义错误,javascript,firebase,cdn,nuxt.js,firebaseui,Javascript,Firebase,Cdn,Nuxt.js,Firebaseui,我正在致力于将本地化的firebaseui与nuxt.js(ssr)集成。但我遇到了一个“firebase未定义”错误。我不熟悉ssr和nuxt.js,我真的希望任何人都能解释为什么这个设置不起作用。感谢您的帮助 firebaseui指令: nuxt.config.js(相关文件的一部分) 插件/firebase.js import firebase from "firebase/app"; import "firebase/firestore"; import "firebase/auth";
import firebase from "firebase/app";
import "firebase/firestore";
import "firebase/auth";
if (!firebase.apps.length) {
firebase.initializeApp(process.env.firebaseConfig);
}
export const authProviders = {
Google: firebase.auth.GoogleAuthProvider.PROVIDER_ID,
Email: firebase.auth.EmailAuthProvider.PROVIDER_ID
};
export const firestore = firebase.firestore();
export const fireAuth = firebase.auth();
export default firebase;
页面/Login.vue
<template>
<no-ssr>
<div class="login">
<div id="firebaseui-auth-container"></div>
</div>
</no-ssr>
</template>
<script>
import firebase, { fireAuth, authProviders } from "~/plugins/firebase";
export default {
name: "Login",
head() {
return {
title: "Login",
script: [
{
src: 'https://www.gstatic.com/firebasejs/ui/4.1.0/firebase-ui-auth__en.js'
}
],
link: [
{
rel: "stylesheet",
href: "https://cdn.firebase.com/libs/firebaseui/4.1.0/firebaseui.css"
}
]
};
},
mounted() {
var checkFirebaseUi = setInterval(function() {
if (window.firebaseui) {
clearInterval(checkFirebaseUi);
const firebaseui = window.firebaseui;
console.log(firebase) // this line works
// error comes from here
// the code from firebaseui cdn return firebase not definded
// but it's clearly accessible
const ui =
firebaseui.auth.AuthUI.getInstance() ||
new firebaseui.auth.AuthUI(fireAuth);
ui.start("#firebaseui-auth-container", {
credentialHelper: firebaseui.auth.CredentialHelper.NONE,
signInOptions: [authProviders.Google, authProviders.Email],
signInFlow: "popup",
tosUrl: "/tos",
privacyPolicyUrl: "/privacy-policy",
callbacks: {
signInSuccessWithAuthResult: this.signInResult
}
});
}
}, 100);
}
};
</script>
beforeMount() {
window.firebase = firebase;
},
从“~/plugins/firebase”导入firebase,{fireAuth,authProviders};
导出默认值{
名称:“登录”,
总目(){
返回{
标题:“登录”,
脚本:[
{
src:'https://www.gstatic.com/firebasejs/ui/4.1.0/firebase-ui-auth__en.js'
}
],
链接:[
{
rel:“样式表”,
href:“https://cdn.firebase.com/libs/firebaseui/4.1.0/firebaseui.css"
}
]
};
},
安装的(){
var checkFirebaseUi=setInterval(函数(){
if(window.firebaseui){
clearInterval(checkFirebaseUi);
常量firebaseui=window.firebaseui;
console.log(firebase)//这行代码有效
//错误来自这里
//未定义firebaseui cdn返回firebase的代码
//但它很容易接近
康斯特乌=
firebaseui.auth.AuthUI.getInstance()||
新的firebaseui.auth.AuthUI(fireAuth);
ui.start(“#firebaseui身份验证容器”{
credentialHelper:firebaseui.auth.credentialHelper.NONE,
签名:[authProviders.Google,authProviders.Email],
signInFlow:“弹出”,
tosUrl:“/tos”,
privacyPolicyUrl:“/隐私策略”,
回调:{
使用AuthResult登录成功:this.signInResult
}
});
}
}, 100);
}
};
当我打开登录页面时,错误返回:
未捕获引用错误:未定义firebase
在新的qo(firebase-ui-auth__en.js:格式:10762)
在login.js:59中,我在/pages/login.vue中添加了这个之后,它就工作了
<template>
<no-ssr>
<div class="login">
<div id="firebaseui-auth-container"></div>
</div>
</no-ssr>
</template>
<script>
import firebase, { fireAuth, authProviders } from "~/plugins/firebase";
export default {
name: "Login",
head() {
return {
title: "Login",
script: [
{
src: 'https://www.gstatic.com/firebasejs/ui/4.1.0/firebase-ui-auth__en.js'
}
],
link: [
{
rel: "stylesheet",
href: "https://cdn.firebase.com/libs/firebaseui/4.1.0/firebaseui.css"
}
]
};
},
mounted() {
var checkFirebaseUi = setInterval(function() {
if (window.firebaseui) {
clearInterval(checkFirebaseUi);
const firebaseui = window.firebaseui;
console.log(firebase) // this line works
// error comes from here
// the code from firebaseui cdn return firebase not definded
// but it's clearly accessible
const ui =
firebaseui.auth.AuthUI.getInstance() ||
new firebaseui.auth.AuthUI(fireAuth);
ui.start("#firebaseui-auth-container", {
credentialHelper: firebaseui.auth.CredentialHelper.NONE,
signInOptions: [authProviders.Google, authProviders.Email],
signInFlow: "popup",
tosUrl: "/tos",
privacyPolicyUrl: "/privacy-policy",
callbacks: {
signInSuccessWithAuthResult: this.signInResult
}
});
}
}, 100);
}
};
</script>
beforeMount() {
window.firebase = firebase;
},
我想firebaseui cdn需要来自窗口对象的firebase对象。我想知道这是前端外部资源工作的性质吗?有什么想法吗