初始化firebase模拟器存储

Posted

技术标签:

【中文标题】初始化firebase模拟器存储【英文标题】:initialize firebase emulator storage 【发布时间】:2021-11-03 19:43:33 【问题描述】:

有没有办法使用 Firebase 存储模拟器进行本地开发?

我发现这些天应该可以使用我猜想的 firebase-tools,但我不知道如何将它包含在我的代码中。

这是我为本地主机配置的 firebase 配置

import firebase from "firebase/app"
import "firebase/auth"
import "firebase/firestore"
import "firebase/functions"
import "firebase/storage"
import "firebase/database"

 firebase.initializeApp(
   apiKey: "-------------------",
   authDomain: "http://localhost:9099",
   databaseURL: "http://localhost:9000?ns=project-name",
   projectId: "project-name",
   storageBucket: "default-bucket",
   messagingSenderId: "--------------",
   appId: "----------------------",
   measurementId: "-----------------",
)

firebase.firestore().settings( host: "localhost:8080", ssl: false )
firebase.auth().useEmulator("http://localhost:9099")
firebase.functions().useEmulator("http://localhost5001")
firebase.database().useEmulator("http://localhost:9090")

目前,当我尝试在存储桶中存储某些内容时,会执行此 url:

https://firebasestorage.googleapis.com/v0/b/default-bucket/o?name=test-file.csv

据我了解,该应用没有获得任何本地存储域,而只有 Firebase 云存储域

【问题讨论】:

【参考方案1】:

如果您使用的是 web sdk v8,您可以像这样将其添加到您的代码中:

var storage = firebase.storage();
storage.useEmulator("localhost", 9199); 

这里的文档中对此进行了概述:https://firebase.google.com/docs/emulator-suite/connect_storage#web-v8

确保在终端中运行命令 firebase emulators:start 时存储模拟器正在运行

【讨论】:

我已经尝试过这个东西:“存储”类型上不存在属性“useEmulator”。 @DahWaR 它应该可以工作,这意味着您的配置有问题。请包括您使用的 web sdk 的版本,以及额外的 sn-ps 代码,以便我可以看到您哪里出错了。 我使用 "firebase": "8.2.3", "firebase-admin": "^9.4.2" 我也设置了环境变量 export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199" @DahWaR 你能分享这个项目,以便我调查你的问题吗?【参考方案2】:

以防万一有人在同一个案子上苦苦挣扎。

我使用的是 firebase 8.2.3,根据 SDK 的可用性,我应该使用 firebase 8.4.0 或更高版本

https://firebase.google.com/docs/emulator-suite/install_and_configure#client_sdk_availability

【讨论】:

以上是关于初始化firebase模拟器存储的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 存储上传适用于模拟器,但不适用于 iPhone

模拟器中的 Firebase 存储:refFromUrl() 需要一个有效的完整 URL

如何关闭本地 Firebase 模拟器?

Flutter Web 不显示 Firebase 存储中的 NetworkImages,但在 android 模拟器上完美运行

无法将 Firebase Cloud Storage Function 范围限定为本地模拟器上的特定存储桶

模拟器上未收到 Firebase 消息