Получение ошибки типа при использовании эмулятора Firebase

#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. На всякий случай, если кто-нибудь еще столкнется с этой проблемой.