use*_*731 5 node.js firebase firebase-realtime-database firebase-storage
当尝试获取刚刚上传到存储的图像的 downloadURL 时,我不断收到“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);
});
Run Code Online (Sandbox Code Playgroud)
小智 7
我发现使用全局 XMLHttpRequest 就足够了,所以我这样做了
npm install xhr2
并添加了
global.XMLHttpRequest = require("xhr2");
Run Code Online (Sandbox Code Playgroud)
到我的文件顶部。这对我有用。
适用于 JavaScript 的 Firebase 客户端 SDK 大多不支持在 NodeJS 上使用。这解释了您的错误 - XMLHttpRequest 在浏览器上本机可用,但在节点中不可用。如果您想运行访问 Firebase 和 Google Cloud 资源的服务器端代码,则应使用服务器 SDK。
Firebase 通过Firebase Admin SDK提供服务器 SDK ,该 SDK 完全适用于节点。对于 Cloud Storage 访问,Admin SDK 重新打包了 Google Cloud 提供的现有 Cloud Storage SDK。
请注意,Google Cloud SDK for Cloud Storage 不提供“下载 URL”的概念。它有一个叫做“签名 URL”的东西,可以类似地使用。
归档时间: |
|
查看次数: |
3910 次 |
最近记录: |