有没有可能refFromURL()在本地无法工作?
function deleteImage(imageUrl: string) {
let urlRef = firebase.storage().refFromURL(imageUrl)
return urlRef.delete().catch((error) => console.error(error))
}当传递以下url时:
http://localhost:9199/v0/b/xxx.appspot.com/o/images%2Fdemo%2FHWEGgAPDSZrtMzbil2MwM.image%2Fjpeg?alt=media&token=a7f798ee-056a-4f03-a7bf-8453b71077e6
我得到以下错误:
Uncaught FirebaseError: Firebase Storage: refFromUrl() expected a valid full URL but got an invalid one. (storage/invalid-argument)
发布于 2021-09-17 01:19:52
我也遇到了这个问题,并且找不到合适的解决方案。
我最终在我的应用程序中实现了一个检查,看看url是否包含"localhost:9199",如果包含,那么它应该按原样提供。如果没有,这意味着代码正在生产环境中使用,需要使用refFromUrl()解压缩。
这只是一种变通方法,而不是正确的修复方法。希望其他人能帮助我们解决这个问题!
export default async function getPostInfo(id) {
const ref = firestore.collection("posts").doc(id);
const doc = await ref.get();
const imgRef = doc.data().image;
// To handle firebase storage emulator. .refFromURL() doesn't work with locally stored files in the emulator.
let image;
const regex = new RegExp(/localhost:9199/);
if (!regex.test(imgRef)) {
image = await storage.refFromURL(imgRef).getDownloadURL();
} else {
image = doc.data().image;
}
return { ...doc.data(), image, id: doc.id };
}https://stackoverflow.com/questions/68982635
复制相似问题