javascript - Firebase 存储不是 vuejs 应用程序中的功能
问题描述
美好的一天开发人员,我正在使用 Firebase 在 Vuejs 中构建这个应用程序,将一些视频和图像存储在我的 Firebase 存储模块中,但是当我初始化检索图像的功能时,我收到了这个错误:“firebase__WEBPACK_IMPORTED_MODULE_2__.storage(.. .).ref(...).child(...).then 不是函数”
在我的 Vuex 方法中,我设置它是为了访问我的 firebase 存储中的图像
actions: {
getVideoAboutMe({commit}) {
firebase
.storage()
.ref("myVideo")
.child("coverr-a-greek-cemetery-top-view-1578925848736.mp4")
.then(uploadTaskSnapshot => {
commit("setVideoAboutMe", uploadTaskSnapshot);
console.log(uploadTaskSnapshot);
return uploadTaskSnapshot.ref.getDownloadURL();
})
.catch((error) => {
alert("Error", error);
});
},
而我的主js文件就是这样设计的:
import * as firebase from "firebase";
import "firebase/storage";
Vue.config.productionTip = false;
Vue.component("myAboutMe", aboutTag);
new Vue({
router,
store,
vuetify,
render: h => h(App),
created() {
firebase.initializeApp({
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
databaseURL: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
projectId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
storageBucket: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
});
this.$store.dispatch("getVideoAboutMe");
}
}).$mount("#app");
然后创建组件上的所有逻辑,但错误完全指的是 vuex 中的这个方法,比如如果存储不存在(我认为它确实导致了导入 firebase)。关于如何改进这一点的任何建议?...谢谢!
解决方案
child()不返回承诺,所以你不能调用then()
它。它返回一个引用对象。如果您想获取该引用引用的对象的下载 URL,只需直接调用getDownloadURL()即可。它返回一个承诺。
firebase
.storage()
.ref("myVideo")
.child("coverr-a-greek-cemetery-top-view-1578925848736.mp4")
.getDownloadURL()
.then(...)
.catch(...)
推荐阅读
- python - 如何在python中预处理包含网站链接(主机页面和登陆页面)的数据以进行机器学习训练?
- html - ..code:: 中的彩色文本 - reStructuredText 中的环境 - 文件 (.rst)
- aws-lambda - 在 Lambda 函数中调用 DynamoDB 时,如何在 Amplify 中引用 GraphQL 模型使用的表的名称?
- javascript - 如何将 JSON 对象数组转换为有效的 XML?
- javascript - 为什么我不能在 JS 中删除全局变量?
- capacitor - 在 Capacitor v3 中使用离子电容器 Angular 实现条带支付
- flutter - 如何在颤动中制作安全的 key.properties 文件
- javascript - GA 事件跟踪 - 代码未触发
- c# - 剃刀页面,将所有复选框作为值列表返回
- pytorch - “RuntimeError: PyTorch convert function for op 'pythonop' not implemented” AND “Python builtin 目前在 Torchscript 中不受支持”