【问题标题】:Attempted import error: 'query' is not exported from 'firebase/firestore'尝试导入错误:“查询”未从“firebase/firestore”导出
【发布时间】:2021-10-26 09:40:31
【问题描述】:

我是初学者,请帮忙,我试图找到解决方案,但没有任何效果。

import firebase from 'firebase/app';
import {query, where} from "firebase/firestore";

import 'firebase/auth';
import 'firebase/analytics';

import { useAuthState } from 'react-firebase-hooks/auth';

firebase.initializeApp({
  apiKey: "AIzaSyAKLyeY2FbjFDD57Kp9sGDi8uHg3neXxjI",
  authDomain: "digitots-dev.firebaseapp.com",
  projectId: "digitots-dev",
  storageBucket: "digitots-dev.appspot.com",
  messagingSenderId: "150130182744",
  appId: "1:150130182744:web:4aba8f8c3b54a74f94182d",
  measurementId: "G-NHKFKD97C5"
})

错误是

尝试导入错误:“查询”未从“firebase/firestore”导出。

这是我的 package.json

{
  "name": "digitots",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "animated-number-react": "^0.1.2",
    "firebase": "^9.0.0",
    "materialize-css": "^1.0.0-rc.2",
    "react": "^17.0.2",
    "react-countup": "^5.2.0",
    "react-dom": "^17.0.2",
    "react-firebase-hooks": "^3.0.4",
    "react-scripts": "4.0.3",
    "web-vitals": "^1.1.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

我试过 npm i firebase@9.0.0 现在它有这个错误:

尝试导入错误:“firebase/app”不包含默认导出(导入为“firebase”)。

【问题讨论】:

  • 版本 9.16.6 :)
  • 我试过 npm i firebase@9.0.0 有这个错误
  • 尝试导入错误:“firebase/app”不包含默认导出(导入为“firebase”)。

标签: javascript firebase google-cloud-firestore


【解决方案1】:

由于您使用的是刚刚发布的v9 SDK,因此不再有全局firebase 导出。相反,您需要导入代码使用的每个单独的函数。如initializing the modular v9 SDK 的文档所示,如下所示:

import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
const firebaseApp = initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

const db = getFirestore();

由于您似乎更习惯使用旧的 v8 API(或正在使用教程),您也可以继续使用它 - 或使用 v9 中的compat 层。其语法是:

import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';

使用compat 层不会让您获得新版本的大小优势,但它可以让您快速入门,然后迁移到新语法(以及相关的大小差异) 递增。

我建议退房:

【讨论】:

  • 非常感谢! :)
  • 不客气@PathonScript ? 也请务必阅读链接,因为更改相当非常广泛,firebase.google.com 之外的大多数信息可能会参考旧的/兼容的 API 已经有一段时间了。
  • 我会的!在遇到这个之前我不知道更新。
猜你喜欢
  • 2021-11-18
  • 2021-02-13
  • 2021-06-27
  • 2021-08-22
  • 2021-02-09
  • 2021-01-24
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多