【发布时间】:2020-12-21 11:08:37
【问题描述】:
我有以下代码来获取存储在 firebase 存储中的图像的 url。
const firebase = require('firebase');
require('firebase/storage');
firebase.initializeApp(conf);
const firebaseRef = firebase.storage().ref(path);
firebaseRef.getStorage().getDownloadURL().then(url => {
console.log(url);
}).catch(function (error) {
console.log(error);
});
当我尝试运行它(使用正确的路径)时,它总是以错误结束:
FirebaseStorageError {
code_: 'storage/canceled',
message_: 'Firebase Storage: User canceled the upload/download.',
serverResponse_: null,
name_: 'FirebaseError'
}
我有这个存储规则:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write
// : if request.auth != null;
}
}
}
当我尝试使用 nodejs api 上传或删除一些文件时,它工作得很好,但在获取一个文件的 url 时它总是返回相同的错误。
我试图找出可能导致此问题的原因,但我找不到任何东西:https://firebase.google.com/docs/storage/web/handle-errors
当然,作为用户,我不会取消上传/下载阶段。
提前谢谢你。
【问题讨论】:
-
你能说明你是如何导入
firebase的吗?或者具体来说:您使用什么节点包来访问 Firebase?询问的原因是您标记了 Node.js,但据我所知,Node.js Admin SDK 没有getDownloadURL方法,我也找不到您在文档中调用的getStorage()方法JavaScript 或 Node.js SDK。 -
我编辑了我的问题以添加 te "require(package)" 部分。另外,我正在关注这个 firebase 文档来完成这项工作:firebase.google.com/docs/storage/web/download-files
-
啊哈...这只是常规的 JavaScript SDK,但使用的是节点捆绑器。我更改了标签以反映这一点,因为 Node.js 和客户端 JavaScript 之间的 API 相当不同。
标签: javascript firebase firebase-storage