【问题标题】:Flutter: Uncaught ReferenceError: firebase is not definedFlutter:未捕获的 ReferenceError:未定义 firebase
【发布时间】:2020-10-08 10:22:49
【问题描述】:

我在 Flutter Web 应用程序中使用 Firebase 服务,但在加载 firebase 脚本时遇到问题。

当我使用颤振时 run -d chrome 我看到空白页面有错误,并且在重新加载页面后加载正常:-/。

当我进行颤振构建网络时 - 页面永远不会加载,重新加载没有帮助。

基本错误: Uncaught ReferenceError: firebase is not defined

这是我在第一次启动时看到的 flutter run -d chrome

Uncaught ReferenceError: firebase is not defined
    at (index):26
app.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
require.js:143 Uncaught Error: Script error for "@firebase/app", needed by: dart_sdk
http://requirejs.org/docs/errors.html#scripterror
    at makeError (require.js:168)
    at HTMLScriptElement.onScriptError (require.js:1738)
:57663/favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found)

当我做 flutter build web - 只有这个错误:

Uncaught ReferenceError: firebase is not defined
    at Object.aoq (top_level.dart:80)
    at Object.auD (cloud_firestore_web.dart:33)
    at cloud_firestore_web.dart:26
    at aom.a (async_patch.dart:315)
    at aom.$2 (async_patch.dart:340)
    at Object.G (async_patch.dart:245)
    at Object.UR (main.dart:8)
    at js_helper.dart:3246
    at js_helper.dart:3246
    at dartProgram (js_helper.dart:3246)

我的 index.html 文件:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>new_flowers</title>
</head>
<body>
  <script src="main.dart.js" type="application/javascript"></script>
  <script src="https://www.gstatic.com/firebasejs/7.15.0/firebase-app.js"></script>
  <script src ="https://www.gstatic.com/firebasejs/7.15.0/firebase-firestore.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.15.0/firebase-auth.js"></script>
  <script>
  // Your web app's Firebase configuration
  var firebaseConfig = {
    apiKey: "...",
    authDomain: "...",
    databaseURL: "...",
    projectId: "...",
    storageBucket: "...",
    messagingSenderId: "...",
    appId: "...",
    measurementId: "..."
  };

  // Initialize Firebase
  firebase.initializeApp(firebaseConfig);
  </script>
</body>
</html>

【问题讨论】:

    标签: firebase flutter


    【解决方案1】:

    您的 index.html 有点乱。尝试像这样定义你的脚本:

    1. Firebase 应用 + 使用的 CDN
    2. Firebase 应用配置
    3. 服务人员
    4. Main.dart.js

    编辑:代码格式不正确,这里是 html 代码的链接:`

    <head>
      <meta charset="UTF-8">
      <meta content="IE=Edge" http-equiv="X-UA-Compatible">
      <meta name="description" content="A new Flutter project.">
    
      <!-- iOS meta tags & icons -->
      <meta name="apple-mobile-web-app-capable" content="yes">
      <meta name="apple-mobile-web-app-status-bar-style" content="black">
      <meta name="apple-mobile-web-app-title" content="bevent">
      <link rel="apple-touch-icon" href="icons/Icon-192.png">
    
      <!-- Favicon -->
      <link rel="shortcut icon" type="image/png" href="favicon.png" />
    
      <title>BEvent</title>
      <link rel="manifest" href="manifest.json">
    </head>
    
    <body>
      <!-- The core Firebase JS SDK is always required and must be listed first -->
      <script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-app.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.15.1/firebase-auth.js"></script>
      <script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-firestore.js"></script>
      <script src="https://www.gstatic.com/firebasejs/7.15.2/firebase-storage.js"></script>
      <script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-analytics.js"></script>
    
      <script>
        // Your web app's Firebase configuration
        var firebaseConfig = {
          ...
        };
        // Initialize Firebase
        firebase.initializeApp(firebaseConfig);
        firebase.analytics();
      </script>
      <!-- This script installs service_worker.js to provide PWA functionality to
           application. For more information, see:
           https://developers.google.com/web/fundamentals/primers/service-workers -->
      <script>
        if ('serviceWorker' in navigator) {
          window.addEventListener('load', function () {
            navigator.serviceWorker.register('flutter_service_worker.js');
          });
        }
      </script>
      <script src="main.dart.js" type="application/javascript"></script>
    </body>
    
    </html>`
    

    【讨论】:

    • 您的代码就像魔术一样工作。 Service Worker 的用途是什么?您从哪里获得信息以将其放入?
    • 当你创建一个 Flutter 项目时,它会自动添加。
    • 有什么方法可以在 dart 而不是 HTML 中添加 firebase 配置?
    • 我不这么认为,因为你必须在 dart & flutter 之前加载 firebase sdks
    • 你是一个英雄,完全遵循这些。我的 webappw 在 lcoally 上运行,但在单独发布后,它只是一个带有未定义 firebase 的白屏。这种 JS 条目的方向,使它起作用。
    猜你喜欢
    • 2021-06-17
    • 2016-10-20
    • 2016-04-30
    • 1970-01-01
    • 2023-01-23
    • 2016-11-03
    • 2011-01-05
    • 2016-01-02
    • 2013-10-06
    相关资源
    最近更新 更多