首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仿真程序中的Firebase存储: refFromUrl()应为有效的完整URL

仿真程序中的Firebase存储: refFromUrl()应为有效的完整URL
EN

Stack Overflow用户
提问于 2021-08-30 10:33:08
回答 1查看 137关注 0票数 2

有没有可能refFromURL()在本地无法工作?

代码语言:javascript
复制
  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)

EN

回答 1

Stack Overflow用户

发布于 2021-09-17 01:19:52

我也遇到了这个问题,并且找不到合适的解决方案。

我最终在我的应用程序中实现了一个检查,看看url是否包含"localhost:9199",如果包含,那么它应该按原样提供。如果没有,这意味着代码正在生产环境中使用,需要使用refFromUrl()解压缩。

这只是一种变通方法,而不是正确的修复方法。希望其他人能帮助我们解决这个问题!

代码语言:javascript
复制
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 };
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68982635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档