首页 > 解决方案 > 未捕获的 SyntaxError:预期的表达式,得到 '<','firebase' 未定义

问题描述

因此,当我将一个简单的 firebase html 页面部署到前端托管站点时,它会显示所有 js 链接的错误

我研究并发现重定向到 html 可能有问题,但找不到原因。

Uncaught SyntaxError: expected expression, got '<'

Uncaught ReferenceError: firebase is not defined


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Welcome to Firebase Hosting</title>

    <!-- update the version number as needed -->
    <script defer src="/__/firebase/8.7.1/firebase-app.js"></script>
    <!-- include only the Firebase features as you need -->
    <script defer src="/__/firebase/8.7.1/firebase-auth.js"></script>
    <script defer src="/__/firebase/8.7.1/firebase-database.js"></script>
    <script defer src="/__/firebase/8.7.1/firebase-firestore.js"></script>
    <script defer src="/__/firebase/8.7.1/firebase-functions.js"></script>
    <script defer src="/__/firebase/8.7.1/firebase-messaging.js"></script>
    <script defer src="/__/firebase/8.7.1/firebase-storage.js"></script>
    <script defer src="/__/firebase/8.7.1/firebase-analytics.js"></script>
    <script defer src="/__/firebase/8.7.1/firebase-remote-config.js"></script>
    <script defer src="/__/firebase/8.7.1/firebase-performance.js"></script>
    <!-- 
      initialize the SDK after all desired features are loaded, set useEmulator to false
      to avoid connecting the SDK to running emulators.
    -->
    <script defer src="/__/firebase/init.js?useEmulator=true"></script>

  </head>
  <body>
    <div id="message">
      <h2>Welcome</h2>
      <h1>Firebase Hosting Setup Complete</h1>
      <p>
        You're seeing this because you've successfully setup Firebase Hosting.
        Now it's time to go build something extraordinary!
      </p>
      <a target="_blank" href="https://firebase.google.com/docs/hosting/"
        >Open Hosting Documentation</a
      >
    </div>
    <p id="load">Firebase SDK Loading&hellip;</p>

    <script>
      document.addEventListener("DOMContentLoaded", function () {
        const loadEl = document.querySelector("#load");
        // // 
        // // The Firebase SDK is initialized and available here!
        //
        // firebase.auth().onAuthStateChanged(user => { });
        // firebase.database().ref('/path/to/ref').on('value', snapshot => { });
        firebase
          .firestore()
          .doc("/foo/bar")
          .get()
          .then((doc) => {
            if (doc.exists) {
              console.log("Document data:", doc.data());
            } else {
              // doc.data() will be undefined in this case
              console.log("No such document!");
            }
          })
          .catch((error) => {
            console.log("Error getting document:", error);
          });
        // firebase.functions().httpsCallable('yourFunction')().then(() => { });
        // firebase.messaging().requestPermission().then(() => { });
        // firebase.storage().ref('/path/to/ref').getDownloadURL().then(() => { });
        // firebase.analytics(); // call to activate
        // firebase.analytics().logEvent('tutorial_completed');
        // firebase.performance(); // call to activate
        //
        // // 

        try {
          let app = firebase.app();
          let features = [
            "auth",
            "database",
            "firestore",
            "functions",
            "messaging",
            "storage",
            "analytics",
            "remoteConfig",
            "performance",
          ].filter((feature) => typeof app[feature] === "function");
          loadEl.textContent = `Firebase SDK loaded with ${features.join(
            ", "
          )}`;
        } catch (e) {
          console.error(e);
          loadEl.textContent =
            "Error loading the Firebase SDK, check the console.";
        }
      });
    </script>
  </body>
</html>

''' Uncaught SyntaxError: 预期的表达式,得到 '<' '''

''' Uncaught ReferenceError: firebase is not defined '''

标签: javascriptfirebasesyntax-error

解决方案


此导入仅存在于在 Firebase CLI 中使用 Firebase 托管或其模拟器时:

<script defer src="/__/firebase/init.js?useEmulator=true"></script>

init.js文件包含您的 Firebase 项目的配置数据,其他托管服务提供商对此一无所知。

因此,当在另一个托管服务提供商上运行此应用程序时,您必须通过从 Firebase 控制台复制/粘贴来明确定义配置。有关如何执行此操作的详细信息,请参阅第 3 步:添加 Firebase SDK 并初始化 FirebaseFrom the CDN中的选项卡。供参考:您现在已经按照同一部分的步骤进行操作。From Hosting URLs


推荐阅读