【发布时间】:2019-05-26 17:51:10
【问题描述】:
我对 firebase 比较陌生,目前正在开发 node.js (react-electron) 应用程序,我的目标是显示一些存储在 firebase-storage 中的图片。
在我的应用中,我知道 内部 firebase 存储 URL gs://myapp.appspot.com/folders/image.jpg 并希望获得 downloadableURL https://firebasestorage.googleapis.com/...
所以问题来了:我知道 firebase 存储中有 refFromURL() 和 getDownloadURL() 方法,我打算这样做
import firebase from 'firebase';
import config from './firebaseConfig.json';
firebase.initializeApp(config);
var storage = firebase.storage();
function fetchTrueImgsrc(internalSrc) {
if (internalSrc === undefined) return null;
return storage.refFromURL(internalSrc).getDownloadURL();
}
我得到了这个
第 4 行:未捕获的 TypeError:firebase__WEBPACK_IMPORTED_MODULE_1___default.a.storage 不是函数
我发现 firebase.storage() 不再支持 node.js,https://firebase.google.com/docs/storage/web/start 上的所有文档对我来说完全没用
所以问题是,如果我不能使用 firebase.storage,我将如何在 node.js 客户端实现这一点?请帮忙。
我试过了:
const myappBucket='myapp.appspot.com';
import { Storage } from '@google-cloud/storage';
const bucket = new Storage().bucket(myappBucket);
const file = bucket.file(internalSrc);
file
.getSignedUrl({
action: 'read',
expires: '03-09-2491'
})
.then(signedUrls => {
console.log('signed URL', signedUrls[0]); // this will contain the picture's url
return;
})
.catch(err => console.error(err));
const myappBucket='myapp.appspot.com';
import config from './firebaseConfig.json';
import firebase_admin from 'firebase-admin';
firebase_admin.initializeApp(config);
var storage = firebase_admin.storage();
var bucket = storage.bucket(myappBucket);
bucket.file(internalSrc).getSignedUrl(
{
action: 'read',
expires: '03-09-2491'
},
function(err, url) {
if (err) {
console.error(err);
} else {
console.log('Download model DL url: ' + url);
}
}
);
两者都有这个错误
SigningError:确定执行环境的意外错误:无法在 GoogleAuth 处获取。
我试图避免将 firebase 降级到 firebase@v4.7.0 但如果没有解决方案,我想我也应该尝试一下。
我正在使用: - “@google-cloud/storage”:“^2.5.0” - “火力基地”:“^6.0.2” - “firebase 管理员”:“^7.3.0” - “反应”:“^16.8.6” - “电子”:“^3.0.10”
谢谢。
【问题讨论】:
-
只是为了确定,你想要你的文件传入参数的下载 url,对吧?
-
是的,我传入
gs://myapp.appspot.com/folders/image.jpg字符串作为参数并希望函数返回https://firebasestorage.googleapis.com/...作为可下载的 URL -
> 你在哪里执行这段代码? > 您如何设置服务帐户?你用的是默认的还是其他的? > 该服务帐户的权限是什么?此服务帐号是否有权访问您尝试访问的存储分区?
标签: node.js electron google-cloud-storage firebase-storage