Firebase在Web应用中运行良好,但是当我尝试在Android上运行时出现错误。
Firebase在Web应用中运行良好,但是当我尝试在Android上运行时出现错误。
当我尝试初始化Firebase Cloud Firestore时,遇到了以下错误:
Uncaught TypeError: WEBPACK_IMPORTED_MODULE_0_firebase.firestore不是一个函数
我之前使用npm install firebase --save
安装了firebase。
import * as firebase from 'firebase'; import router from '../router'; const config = { apiKey: "a", authDomain: "a", databaseURL: "a", projectId: "a", storageBucket: "a", messagingSenderId: "a" }; if(!firebase.apps.length){ firebase.initializeApp(config); let firestore = firebase.firestore(); }
问题原因:在Android上运行Firebase应用程序时出现错误的原因可能是由于以下原因之一:
1. Firebase版本不兼容:可能是因为Firebase版本不兼容所致。确保使用最新版本的Firebase。
2. 依赖项缺失:可能是因为缺少某些依赖项所致。确保在项目中添加了正确的依赖项。
解决方法:
1. 确保安装了最新版本的Firebase。可以使用以下命令在项目中安装最新版本的Firebase:
npm install firebase.12.0 --save
2. 添加Firebase和Firestore到项目中。可以使用以下代码将Firebase和Firestore添加到项目中:
const firebase = require("firebase"); // Required for side-effects require("firebase/firestore");
3. 初始化Firebase应用程序。使用以下代码初始化Firebase应用程序,并连接到Cloud Firestore:
firebase.initializeApp({ apiKey: '### FIREBASE API KEY ###', authDomain: '### FIREBASE AUTH DOMAIN ###', projectId: '### CLOUD FIRESTORE PROJECT ID ###' }); // Initialize Cloud Firestore through Firebase var db = firebase.firestore();
通过按照上述步骤操作,您应该能够在Android上成功运行Firebase应用程序。
参考来源:https://firebase.google.com/docs/firestore/quickstart?authuser=0
问题的原因是使用了Firebase的版本9,但在Android上运行时出现错误。解决方法是使用compat库来代替版本9的Firebase库。具体步骤如下:
1. 使用以下代码替代原有的Firebase导入代码:
// v9 compat packages are API compatible with v8 code import firebase from 'firebase/compat/app'; import 'firebase/compat/firestore';
2. 参考以下链接进行从版本8升级到版本9的操作:[https://firebase.google.com/docs/web/modular-upgrade](https://firebase.google.com/docs/web/modular-upgrade)。
需要注意的是,compat库只是一个临时解决方案,在未来的主要SDK版本(例如版本10或版本11)中将完全移除。因此,最终的目标是将compat代码移除,只保留版本9的模块化代码。
目前可以使用compat库,但建议在未来尽快切换到模块化代码。
问题的原因是在Android上运行时,Firebase在Web App中运行正常,但是在Android上运行时出错。解决方法是导入多个库:firebase
和firebase/firestore
。这是因为firebase
核心库不包括firestore库。具体解决方法如下:
import firebase from 'firebase/app'; import 'firebase/firestore';
如果您在使用React Native,这可能会在Android上出现问题,但在iOS上应该没有问题。截至2019年2月,这种解决方法是完美的。感谢您!:)
感谢您的回答!第二个导入语句是我所缺少的。我正在使用纯JavaScript构建一个简单的聊天应用程序,在HTML文件的
标签中已经包含了静态URL,但仍然出现此错误,请帮助我,提前感谢!