尝试获取我刚刚上传到存储的图像的下载 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);
});
适用于 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”的东西,可以类似地使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句