node.js - 类型错误:firebase.default.initializeApp 不是函数
问题描述
我正在为我的网络项目使用 firebase。特别是在服务器端。我遵循了官方文档。
https://firebase.google.com/docs/web/setup?authuser=0#node.js-apps 它曾经说过,
// Firebase App (the core Firebase SDK) is always required and
// must be listed before other Firebase SDKs
import * as firebase from "firebase/app";
// Add the Firebase services that you want to use
import "firebase/auth";
import "firebase/firestore";
和
// TODO: Replace the following with your app's Firebase project configuration
var firebaseConfig = {
// ...
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
但它不起作用。所以我只是尝试随机搜索这个。
只有它有效。
import firebase from "@firebase/app"
import "@firebase/auth"
import "@firebase/firestore"
...
firebase.default.initializeApp(firebaseConfig)
我的环境是这样的。
➜ firestore-test node --version
v14.7.0
➜ firestore-test firebase --version
8.6.0
➜ firestore-test npm --version
6.14.7
为什么官方介绍不起作用?我假设文档是旧的,它发生在 Node 14+ 版本。
那正确吗?
解决方案
我也有同样的挫败感,但根据版本 8.0.0 中的发布说明https://firebase.google.com/support/release-notes/js - 2020 年 10 月 26 日
重大更改:package.json 文件中的浏览器字段现在指向 ESM 包而不是 CJS 包。使用 ESM 导入的用户现在必须使用默认导入而不是命名空间导入。
8.0.0 之前
import * as firebase from 'firebase/app'
8.0.0 之后
import firebase from 'firebase/app'
使用 require('firebase/app') 或 require('firebase') 的代码仍然可以工作,但为了获得正确的类型(例如代码完成),用户应该将这些 require 调用更改为 require('firebase/app ').default 或 require('firebase').default。这是因为 SDK 现在为 ESM 包使用类型,并且不同的包共享一个类型文件。
推荐阅读
- python - 为什么我没有得到?我正在尝试列出一份标准偏差
- python - 我使用opencv和YOLO python的对象出现时间
- mysql - 如何撤销mysql中选定表的所有权限?
- python - 如何在文本文件-Python的条件后加入行?
- python - MongoDB 忽略 $push 命令但没有错误 | Python
- r - R中熔化数据后输出不正确
- python - 如何在pygame中跟随我的玩家时让敌人分开
- github - GitHub + 不要将 PR 与未解决的对话合并
- javascript - 如何防止 Bootstrap Modal 在每个更改事件上显示?
- c# - 如何将字符串时间戳转换为日期?