Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将firebaseui CDN与nuxt.js集成,firebase未定义错误_Javascript_Firebase_Cdn_Nuxt.js_Firebaseui - Fatal编程技术网

Javascript 将firebaseui CDN与nuxt.js集成,firebase未定义错误

Javascript 将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";

我正在致力于将本地化的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";

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对象。我想知道这是前端外部资源工作的性质吗?有什么想法吗