Firebase 存储不是 vuejs 应用程序中的功能

Posted

技术标签:

【中文标题】Firebase 存储不是 vuejs 应用程序中的功能【英文标题】:Firebase Storage isn't a function, in vuejs app 【发布时间】:2020-10-24 18:54:21 【问题描述】:

开发人员好,我正在使用 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)。 关于如何改进这一点的任何建议?...谢谢!!!

【问题讨论】:

【参考方案1】:

child() 不返回承诺,因此您不能在其上调用then()。它返回一个Reference 对象。如果您想获取该引用所引用对象的下载 URL,只需直接在其上调用 getDownloadURL()。它返回一个承诺。

      firebase
        .storage()
        .ref("myVideo")
        .child("coverr-a-greek-cemetery-top-view-1578925848736.mp4")
        .getDownloadURL()
        .then(...)
        .catch(...)

【讨论】:

非常感谢道格拉斯

以上是关于Firebase 存储不是 vuejs 应用程序中的功能的主要内容,如果未能解决你的问题,请参考以下文章

使用 VueJs 在 firebase 中上传和下载存储图像

使用firebase上传vue js dropzone图像(存储不是功能)

除非在 vuejs2 中通过热重载更改代码,否则 firebase 存储不会运行

从 Firebase 存储网络下载图像 - vuejs

使用 Vuejs 在 Firebase 存储中获取上传文件的 url

AuthProvider在使用firebase auth时不是构造函数,VueJS Webpack