#javascript #firebase #google-cloud-firestore #firebase-cli
#javascript #firebase #google-облако-firestore #firebase-cli
Вопрос:
Я пытаюсь настроить эмулятор Firebase, но при попытке использовать Firestore получаю следующую ошибку (хостинг, функции и аутентификация работают должным образом).
[Ошибка] Ошибка типа: 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 amp;amp; typeof firebase.database === 'function') {
firebase.database().useEmulator(firebaseEmulators.database.host, firebaseEmulators.database.port);
}
if (firebaseEmulators.firestore amp;amp; typeof firebase.firestore === 'function') {
firebase.firestore().useEmulator(firebaseEmulators.firestore.host, firebaseEmulators.firestore.port);
}
if (firebaseEmulators.functions amp;amp; typeof firebase.functions === 'function') {
firebase.functions().useEmulator(firebaseEmulators.functions.host, firebaseEmulators.functions.port);
}
if (firebaseEmulators.auth amp;amp; 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
Я искал здесь и в Google, но, похоже, не могу найти ответ на эту проблему?
Спасибо
Комментарии:
1. Может быть, это может помочь? firebase.google.com/docs/emulator-suite/install_and_configure
2. Привет, спасибо, я читал это несколько раз и, похоже, у меня есть вся необходимая информация в моем файле firebase.json: « «эмуляторы»: { «auth»: { «порт»: 9099 }, «функции»: { «порт»: 5001 }, «firestore»: { «порт»: 8080 }, «хостинг»: { «порт»: 5000 }, «пользовательский интерфейс»: { «включено»: true } «
Ответ №1:
Я использовал неправильную версию Firebase 7.24.0, а не более 8. На всякий случай, если кто-нибудь еще столкнется с этой проблемой.