初始化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
Flutter Web 不显示 Firebase 存储中的 NetworkImages,但在 android 模拟器上完美运行