【问题标题】:Getting Uncaught ReferenceError: auth is not defined error but it is already defined获取未捕获的 ReferenceError: auth is not defined 错误但已定义
【发布时间】:2020-05-01 15:10:16
【问题描述】:

我收到Uncaught ReferenceError: auth is not defined at auth.js:2 的一个奇怪问题,但我确信它已经在 index.html 中定义,因为注册和登录工作正常。但它仍然在 AuthState 中显示错误。这段代码有什么问题?

// AuthState
auth.onAuthStateChanged(user => {
  if (user) {
    console.log('user logged in: ', user);
  } else {
    console.log('user logged out');
  }
});

// Signup
const signupForm = document.querySelector('#signupForm');

if(signupForm)
{
  signupForm.addEventListener('submit', (e) => {
    e.preventDefault();

    const email = signupForm['signupemail'].value;
    const password = signupForm['signuppassword'].value;

    auth.createUserWithEmailAndPassword(email, password).then(cred => {
      console.log(cred.user);
      signupForm.reset();
    });
  });
}

// Login
const loginForm = document.querySelector('#loginForm');

if(loginForm)
{
  loginForm.addEventListener('submit', (e) => {
    e.preventDefault();

    const email = loginForm['loginemail'].value;
    const password = loginForm['loginpassword'].value;

    auth.signInWithEmailAndPassword(email, password).then((cred) => {
      console.log(cred.user);
      loginForm.reset();
    });
  });
}

这是我将这段代码放在正文部分底部的 index.html 页面代码。

<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/7.14.2/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.14.2/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.14.2/firebase-firestore.js"></script>

<script src="scripts/index.js"></script>
<script src="scripts/auth.js"></script>

<!-- TODO: Add SDKs for Firebase products that you want to use
     https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/7.14.2/firebase-analytics.js"></script>

<script>
  // Your web app's Firebase configuration
  var firebaseConfig = {
    apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    authDomain: "xxxxxxxxxxxxxxxxxxxxxx",
    databaseURL: "xxxxxxxxxxxxxxxxxxxxxx",
    projectId: "xxxxxxxxx",
    storageBucket: "xxxxxxxxxxxxx",
    messagingSenderId: "xxxxxxxxxxxxx",
    appId: "x:xxxxxxx:xxxx:xxxxxxxxxxxxxxxxx",
    measurementId: "G-xxxxxxxxxxx"
  };
  // Initialize Firebase
  firebase.initializeApp(firebaseConfig);
  firebase.analytics();

  const auth = firebase.auth();
  const db = firebase.firestore();
</script>

所以,上面是代码.......................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................

【问题讨论】:

  • 如果您遇到错误,那么您的假设是错误的。 auth 究竟是如何定义的?您发布的任何内容都无法解释这一点。
  • 好的,我的意思是如果 Auth 定义不正确,那么为什么登录和注册工作正常?
  • 什么时候出现这个错误,auth 是从哪里导入的?
  • 您的代码在任何函数之外引用auth,因此必须在最初解释脚本时对其进行定义。

标签: javascript firebase firebase-authentication


【解决方案1】:

所以问题是您在定义变量之前导入脚本。

应该是

<script>
  // Your web app's Firebase configuration
  var firebaseConfig = {
    apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    authDomain: "xxxxxxxxxxxxxxxxxxxxxx",
    databaseURL: "xxxxxxxxxxxxxxxxxxxxxx",
    projectId: "xxxxxxxxx",
    storageBucket: "xxxxxxxxxxxxx",
    messagingSenderId: "xxxxxxxxxxxxx",
    appId: "x:xxxxxxx:xxxx:xxxxxxxxxxxxxxxxx",
    measurementId: "G-xxxxxxxxxxx"
  };
  // Initialize Firebase
  firebase.initializeApp(firebaseConfig);
  firebase.analytics();

  const auth = firebase.auth(); // <----- this is where you define auth
  const db = firebase.firestore();
</script>
<script src="scripts/auth.js"></script> <!-- then you import the script -->

所以首先定义身份验证,然后导入使用它的脚本。

【讨论】:

    【解决方案2】:
       <!-- Compiled and minified JavaScript -->
    <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-auth.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js"></script>
    <script>
        // Your web app's Firebase configuration
        var firebaseConfig = {
            apiKey: "AIzaSyDBrgamDSO-o-3Pr_yRILe1ohsKRscxFK4",
            authDomain: "auth-thenetninja-8c561.firebaseapp.com",
            databaseURL: "https://auth-thenetninja-8c561.firebaseio.com",
            projectId: "auth-thenetninja-8c561",
            storageBucket: "auth-thenetninja-8c561.appspot.com",
            messagingSenderId: "807934937683",
            appId: "1:807934937683:web:5a0676e96cb8c4cb2cd4a6"
        };
        // Initialize Firebase
        firebase.initializeApp(firebaseConfig);
    
        // Make auth and firestore references
        const auth = firebase.auth()
        const db = firebase.firestore()
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
    <script src="scripts/auth.js"></script>
    <script src="scripts/index.js"></script>
    

    【讨论】:

    • 请添加一些描述,让我们知道导致该错误的原因。
    猜你喜欢
    • 2014-09-16
    • 2015-01-29
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多