获取downloadURL使用Firebase不断抛出错误'XMLHttpRequest未定义'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取downloadURL使用Firebase不断抛出错误'XMLHttpRequest未定义'相关的知识,希望对你有一定的参考价值。

在尝试获取刚刚上传到存储的图像的downloadURL时,我不断得到“XMLHttpRequest未定义”。关于这里发生了什么的任何想法?我可以检索元数据,但图像网址未在方案中列出:/

节点:

import firebase, { storage } from './firebase';
const serviceAccount = require('./serviceAccountKey.json');
const admin = require('firebase-admin');
const app = express()
const dbUrl = "https://authentication.firebaseio.com"

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: dbUrl,
  storageBucket: 'authentication.appspot.com'
});

//Initalize bucket
const bucket = admin.storage().bucket();

......
bucket.upload(imageUrl).then(result => {
        const file = result[0];
        return file.getMetadata();
      }).then(results => {
          const ref = storage.ref('users/' + userRecord.uid + '/image').downloadURL();
          console.log(ref)
          //const metadata = results[0];
          //console.log('metadata=', metadata.mediaLink);
          //firebase.database().ref('users/' + userRecord.uid + '/image').set(metadata.mediaLink);
      }).catch(error => {
          console.error(error);
      });
    })
    .catch(function(error) {
      console.log("Error creating new user:", error);
    });

储存:enter image description here

答案

在NodeJS上大多不支持用于javascript的Firebase客户端SDK。这解释了您的错误 - XMLHttpRequest在浏览器上本机可用,但在节点中不可用。如果要运行访问Firebase和Google Cloud资源的服务器端代码,则应使用服务器SDK。

Firebase通过Firebase Admin SDK提供服务器SDK,qazxswpoi完全适用于节点。对于云存储访问,Admin SDK会重新打包Google Cloud提供的现有云存储SDK。

请注意,Google Cloud SDK for Cloud Storage不提供“下载网址”的概念。它有一个称为“签名URL”的东西,可以使用类似的东西。

以上是关于获取downloadURL使用Firebase不断抛出错误'XMLHttpRequest未定义'的主要内容,如果未能解决你的问题,请参考以下文章

java - 如何在Java Spring Boot上的firebase存储中获取上传文件的downloadURL

将文件上传到 Firebase 存储并获取 downloadUrl。如何在 Kotlin 函数中返回结果?

成功上传文件后,来自 Firebase 存储的 downloadURL 为零

将图像从 Firebase 下载到 Flutter

Firebase 存储 downloadUrl 完成处理程序始终返回错误

Vuejs + Firebase Storage 将多个图像上传到 Firebase Storage 并将所有 downloadURL 推送到 Firestore