【问题标题】:Getting a TypeError when using the Firebase Emulator使用 Firebase 模拟器时出现 TypeError
【发布时间】: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


【解决方案1】:

我使用了错误的 Firebase 7.24.0 版本,而不是 8 以上版本。以防万一其他人遇到这个问题。

【讨论】:

    猜你喜欢
    • 2020-09-12
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 2022-12-29
    • 2021-06-02
    • 1970-01-01
    • 2020-06-15
    • 2011-09-23
    相关资源
    最近更新 更多