【发布时间】:2021-04-10 12:52:43
【问题描述】:
我正在尝试设置 Firebase 模拟器,但在尝试使用 Firestore 时出现以下错误(主机、函数和身份验证都按预期工作)。
[错误] TypeError: firebase.firestore().useEmulator 不是函数。 (在 'firebase.firestore().useEmulator(firebaseEmulators.firestore.host, firebaseEmulators.firestore.port)' 中,'firebase.firestore().useEmulator' 未定义) 全局代码 (init.js:39)
下面是相关的init.js代码:
if (firebaseConfig) {
firebase.initializeApp(firebaseConfig);
var firebaseEmulators = {
"auth": {
"host": "localhost",
"port": 9099
},
"firestore": {
"host": "localhost",
"port": 8080
},
"functions": {
"host": "localhost",
"port": 5001
}
};
if (firebaseEmulators) {
console.log("Automatically connecting Firebase SDKs to running emulators:");
Object.keys(firebaseEmulators).forEach(function(key) {
console.log('\t' + key + ': http://' + firebaseEmulators[key].host + ':' + firebaseEmulators[key].port );
});
if (firebaseEmulators.database && typeof firebase.database === 'function') {
firebase.database().useEmulator(firebaseEmulators.database.host, firebaseEmulators.database.port);
}
if (firebaseEmulators.firestore && typeof firebase.firestore === 'function') {
firebase.firestore().useEmulator(firebaseEmulators.firestore.host, firebaseEmulators.firestore.port);
}
if (firebaseEmulators.functions && typeof firebase.functions === 'function') {
firebase.functions().useEmulator(firebaseEmulators.functions.host, firebaseEmulators.functions.port);
}
if (firebaseEmulators.auth && typeof firebase.auth === 'function') {
firebase.auth().useEmulator('http://' + firebaseEmulators.auth.host + ':' + firebaseEmulators.auth.port);
}
} else {
console.log("To automatically connect the Firebase SDKs to running emulators, replace '/__/firebase/init.js' with '/__/firebase/init.js?useEmulator=true' in your index.html");
}
}
我的 index.html 文件中有以下内容:
<script src="/__/firebase/7.24.0/firebase-app.js"></script>
<script src="/__/firebase/7.24.0/firebase-analytics.js"></script>
<script src="/__/firebase/7.24.0/firebase-auth.js"></script>
<script src="/__/firebase/7.24.0/firebase-firestore.js"></script>
<script src="/__/firebase/init.js?useEmulator=true"></script>
这在相关的 index.js 文件中:
const auth = firebase.auth();
const db = firebase.firestore();
它在非仿真的服务器上运行良好(没有 ?useEmulator=true)。
我正在使用最新的 firebase cli 9.1.0
我在这里和谷歌上搜索过,但似乎找不到这个问题的答案?
谢谢
【问题讨论】:
-
您好,谢谢,我已经阅读了很多次,并且似乎在我的 firebase.json 文件中包含所有相关信息:``` "emulators": { "auth": { "port" :9099 },“功能”:{“端口”:5001 },“firestore”:{“端口”:8080 },“主机”:{“端口”:5000 },“ui”:{“启用”:真} ```
标签: javascript firebase google-cloud-firestore firebase-cli