【问题标题】:Firebase Firestore Web v9 initialiseFirebase Firestore Web v9 初始化
【发布时间】:2021-06-26 10:01:06
【问题描述】:

我开始将我的 firstore 项目迁移到 web v9。我使用以下步骤: https://firebase.google.com/docs/web/setup?sdk_version=v9#add-sdks-initialize

  <script src="https://www.gstatic.com/firebasejs/9.0.0-beta.2/firebase-app-compat.js"></script>
  <script src="https://www.gstatic.com/firebasejs/9.0.0-beta.2/firebase-analytics-compat.js"></script>
  <script src="https://www.gstatic.com/firebasejs/9.0.0-beta.2/firebase-auth-compat.js"></script>
  <script src="https://www.gstatic.com/firebasejs/9.0.0-beta.2/firebase-firestore-compat.js"></script>
  <script>
    
    import firebase from "firebase/compat/app";
    //const firebase = require('firebase/compat/app');

    var firebaseConfig = {
      apiKey: "zaSy...opjQ6GQ3",
      authDomain: "...firebaseapp.com",
      projectId: "...",
      storageBucket: "...appspot.com",
      messagingSenderId: "..049",
      appId: "1:645243..9a",
      measurementId: "..Q3Y.."
    };
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
    firebase.analytics();
  </script>

1?。错误“未捕获的语法错误:无法在模块外使用 import 语句”

2?。模块化的 CDN 在哪里 - 我不想使用 compat sdk。

3?。在此页面上有可用的 Firebase JS SDK(来自 CDN)的信息,但看起来它适用于 v8 - vesrion 9 在哪里

请问有人有样品吗?

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    我在文档的 CDN 部分甚至在 Github 上都没有看到 modular SDK。第一个错误是意料之中的,因为您不在节点环境中。你可以阅读更多关于here的信息。

    您正在导入的脚本中也包含“compat”,这意味着:

    Compat - 一个熟悉的 API 界面,与 版本 8 SDK,让您无需更改即可升级到版本 9 您的所有 Firebase 代码一次。兼容库几乎没有 与版本 8 相比,在尺寸或性能方面具有优势。

    要继续使用 Firebase v9 beta(通过 CDN),请继续使用 v8 代码样式。

    // No need to 'import {}' anything
    // Just add the scripts
    
    firebase.initializeApp({...})
    

    我不确定为什么文档中提到了 import {} from "firebase/compat/app",但我假设它只是从文档的 NPM 选项卡中复制而来。

    我尝试查看它(简单的 HTML 和 Vue 应用程序)并得到相同的结果:

    所以我想如果您对 v9 如此感兴趣,您可能不得不使用 NPM。 (不确定Browserify 会有多大用处)

    【讨论】:

    • 非常感谢。我计划将我的应用程序更新到 9,但看起来他们甚至没有开始这样做:)。例如如何使用这个 :import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); createUserWithEmailAndPassword(身份验证,电子邮件,密码)
    • @avariat 我用过它,但在一个 Vue 应用程序中。因此,除非您使用框架并使用 npm 或 yarn 安装它,否则这很困难。此外,如果答案有帮助,您可以接受/投票,否则请随时提出进一步的问题。
    • 我现在在同一条船上,虽然我也在使用 Vue 应用程序...除了我试图让服务人员在浏览器时中继 Firebase 云消息传递通知在后台...而且我不是 Javascript/Typescript 开发人员。在Tarik Huber 的建议下,我最近的希望是用于直接“消息传递”的兼容 SDK 中包含服务工作者样板,因为似乎没有 9.0.2/firebase-messaging-sw-compat。 js 存在。
    • @Leo 从 v9 开始,您应该使用构建工具编译代码以最小化其占用空间,而不是使用 CDN。 CDN 的主要好处是使用它的站点越多,使用 Firebase 的开销就越小。现在 SDK 可以通过 tree-shaking 最小化占用空间,CDN 变得不那么有用了。我建议使用a CDN loader script 学习新的 SDK,然后为您的实际应用使用构建工具。
    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2023-02-10
    • 2021-02-26
    • 1970-01-01
    • 2019-08-06
    • 2017-03-26
    相关资源
    最近更新 更多