繁体   English   中英

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

[英]Get downloadURL keeps throwing error 'XMLHttpRequest is not defined' using Firebase

尝试获取我刚刚上传到存储的图像的下载 URL 时,我不断收到“未定义 XMLHttpRequest”的消息。 对这里发生的事情有什么想法吗? 我可以检索元数据,但图像 url 未在方案中列出:/

节点:

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);
    });

贮存: 在此处输入图片说明

我发现使用全局 XMLHttpRequest 就足够了,所以我做了

npm install xhr2

并添加

global.XMLHttpRequest = require("xhr2");

到我的文件的顶部。 它对我有用。

适用于 JavaScript 的 Firebase 客户端 SDK 大多不支持在 NodeJS 上使用。 这解释了您的错误 - XMLHttpRequest 在浏览器上本机可用,但在 node.js 中不可用。 如果您想运行访问 Firebase 和 GCP 资源的服务器端代码,您应该使用服务器 SDK。

Firebase 通过Firebase Admin SDK提供服务器SDK ,它完全适用于节点。 对于 Cloud Storage 访问,Admin SDK 重新打包了 Google Cloud 提供的现有 Cloud Storage SDK。

请注意,Google Cloud SDK for Cloud Storage 没有提供“下载 URL”的概念。 它有一个叫做“签名 URL”的东西,可以类似地使用。

npm install xhr2 对我有用。 请注意,一般来说,这不是好的做法。 如果您使用 Firebase Cloud Storage,在 nodejs 级别(服务器),您应该使用管理 sdk(用于服务器),而不是 firebase 客户端 sdk。 这意味着您将使用谷歌云功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM