Mad*_*Mac 8 firebase typescript angularfire angular
我已经将 firebase JS SDK 从 v7 升级到 v8.0.0,我正在像这样导入 firebase。
import * as firebase from 'firebase';
Run Code Online (Sandbox Code Playgroud)
访问以下任何一项都会导致以下错误。
firebase.firestore.FieldValue.serverTimestamp()
firebase.User
firebase.auth.UserCredential
Run Code Online (Sandbox Code Playgroud)
在“firebase”中找不到导出“firestore”(导入为“firebase”)属性“firestore”在类型“typeof import("appPath/node_modules/firebase/index")”上不存在
我通过将 firebase 更改为 firebase.default 找到了一种解决方法,例如
firebase.default.firestore.FieldValue.serverTimestamp()
Run Code Online (Sandbox Code Playgroud)
这是解决此问题的正确方法吗?
编辑:我也在项目中使用 AngularFire。我尝试使用:
import firebase from 'firebase/app';
import 'firebase/firestore';
export const firestore = firebase.firestore();
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误:
未捕获的 FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - 调用 Firebase App.initializeApp() (app/no-app)。
小智 31
对于那些在版本 9 Firebase 上遇到类似错误的用户,请确保将路径更改为:
import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';
...
Run Code Online (Sandbox Code Playgroud)
代替:
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
...
Run Code Online (Sandbox Code Playgroud)
小智 14
当我更新到 Angular 11 时,我遇到了同样的问题。我尝试了安装 firebase-admin 库的修复程序,并按照此线程中的说明进行操作,但这不应该在浏览器中运行并导致一些其他问题,所以我放弃了。
我从AngularFire的发行说明中注意到,最新版本不支持旧版本的 JS SDK,这就是这个函数的来源,所以我删除了 node_modules,package-lock.json 文件,并运行 npm cache clean - -force 然后 npm install 运行干净。那什么都没做,但我觉得很有成就感。
然后我遇到了这个线程,它解释了我的问题,并通过从
'从'firebase/app'导入*作为firebase;
到
从“firebase/app”导入 firebase;
这消除了“找不到firestore”错误并且它正确编译。使用原始代码:
get firebaseTimestamp() { return firebase.firestore.FieldValue.serverTimestamp(); }
希望这会有所帮助 - 这是一个棘手的错误。
| 归档时间: |
|
| 查看次数: |
3365 次 |
| 最近记录: |