相关疑难解决方法(0)

TypeError:firebase.storage不是函数

按照这个例子,我不断收到错误:

 TypeError: firebase.storage is not a function
Run Code Online (Sandbox Code Playgroud)

从我的代码中的这一行:

var storageRef = firebase.storage().ref();
Run Code Online (Sandbox Code Playgroud)

(当我只是尝试从存储指南初始化存储时,从firebase的npm站点链接,我得到同样的错误.)

在我的Node.js项目中,我包括以下库:

  • const firebase = require('firebase');
  • var admin = require('firebase-admin');
  • const fs = require('fs');

到目前为止,我已经成功地读取并写入了firebase数据库,创建了对数据库的引用var db = admin.database(),然后var ref = db.ref("/")......所以我知道我已经正确配置了Firebase和firebase-database.但是我卡上storage,并试图既admin.storage().ref()firebase.storage().ref(),并firebase.storage().ref("/")用相同的错误消息.

我也尝试过:

var storage = firbase.storage();
var storageRef = storage.ref();
Run Code Online (Sandbox Code Playgroud)

const app = firebase.initializeApp(config);
var storage = app.storage();
Run Code Online (Sandbox Code Playgroud)

ref()'s无效的论点()"/"...但有相同的信息,但无济于事.

我正在使用:

  • "firebase":"^ 3.6.4"
  • "firebase-admin":"^ …

javascript node.js firebase firebase-storage

38
推荐指数
6
解决办法
3万
查看次数

使用Node.js将文件上传到Firebase存储

我正在尝试使用Node.js了解如何在Firebase存储中上传文件.我的第一次尝试是使用Firebase库:

"use strict";

var firebase = require('firebase');

var config = {
    apiKey: "AIz...kBY",
    authDomain: "em....firebaseapp.com",
    databaseURL: "https://em....firebaseio.com",
    storageBucket: "em....appspot.com",
    messagingSenderId: "95...6"
};

firebase.initializeApp(config);

// Error: firebase.storage is undefined, so not a function
var storageRef = firebase.storage().ref();

var uploadTask = storageRef.child('images/octofez.png').put(file);

// Register three observers:
// 1. 'state_changed' observer, called any time the state changes
// 2. Error observer, called on failure
// 3. Completion observer, called on successful completion
uploadTask.on('state_changed', function(snapshot){
    ...
}, function(error) {
    console.error("Something nasty happened", error);
}, …
Run Code Online (Sandbox Code Playgroud)

javascript node.js firebase gcloud firebase-storage

31
推荐指数
4
解决办法
3万
查看次数

如何使用Node.js将base64编码图像(字符串)直接上传到Google Cloud Storage存储桶?

目前,我正在使用@ google-cloud/storage NPM软件包将文件直接上传到Google云端存储分区.这需要一些技巧,因为我只有图像的base64编码字符串.我必须:

  • 解码字符串
  • 将其另存为文件
  • 将文件路径发送到以下脚本以上传到Google云端存储
  • 删除本地文件

我想避免将文件存储在文件系统中,因为我使用的是Google App Engine,如果删除操作因任何原因无效,我不想重载文件系统/留下垃圾文件.这就是我的上传脚本现在的样子:

// Convert the base64 string back to an image to upload into the Google Cloud Storage bucket
var base64Img = require('base64-img');
var filePath = base64Img.imgSync(req.body.base64Image, 'user-uploads', 'image-name');

// Instantiate the GCP Storage instance
var gcs = require('@google-cloud/storage')(),
    bucket = gcs.bucket('google-cloud-storage-bucket-name');

// Upload the image to the bucket
bucket.upload(__dirname.slice(0, -15) + filePath, {
    destination: 'profile-images/576dba00c1346abe12fb502a-original.jpg',
    public: true,
    validation: 'md5'
}, function(error, file) {

    if (error) {
        sails.log.error(error);
    }

    return res.ok('Image …
Run Code Online (Sandbox Code Playgroud)

javascript node.js google-cloud-storage google-cloud-platform

24
推荐指数
5
解决办法
1万
查看次数

如何从数据库触发的云功能中访问Firebase存储?

我想通过监听由functions.database.ref().onWrite()(而不是functions.storage.object().onChange())触发的事件来使用firebase云功能执行文件操作.

我注意到大多数使用云函数的示例functions.storage.object().onChange()触发了用于文件操作的云函数.有没有办法storageRef从内部获取functions.database.ref()并执行文件操作?

firebase google-cloud-functions firebase-storage

9
推荐指数
1
解决办法
2014
查看次数

从使用 firebase-admin 上传的文件中获取公共 URL

我使用 firebase-admin 和 firebase-functions 在 Firebase 存储中上传文件。

我在存储中有这个规则:

service firebase.storage {
  match /b/{bucket}/o {
    match /images {
      allow read;
      allow write: if false;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想使用以下代码获取公共 URL:

const config = functions.config().firebase;
const firebase = admin.initializeApp(config);
const bucketRef = firebase.storage();

server.post('/upload', async (req, res) => {

  // UPLOAD FILE

  await stream.on('finish', async () => {
        const fileUrl = bucketRef
          .child(`images/${fileName}`)
          .getDownloadUrl()
          .getResult();
        return res.status(200).send(fileUrl);
      });
});
Run Code Online (Sandbox Code Playgroud)

但我有这个错误.child is not a function。如何使用 firebase-admin 获取文件的公共 url?

google-cloud-storage firebase firebase-storage firebase-admin

8
推荐指数
2
解决办法
2万
查看次数

如何为上传到 firebase 存储的文件生成访问令牌?

我可以使用 firebase-admin 通过 nodejs 将文件上传到我的 firebase 存储桶,但是当我转到 firebase UI 时,我无法打开该文件。我注意到通过 firebase UI 上传的文件会自动生成一个访问令牌,但没有通过 nodejs 上传的文件。

我已经尝试了几种方法,例如使用下载令牌设置元数据并在上传文件后公开文件。没有一个奏效。

如何通过 API 调用生成访问令牌,而不必为每个上传的文件点击生成令牌?

node.js firebase firebase-storage firebase-admin

8
推荐指数
3
解决办法
6148
查看次数

firebase的大小调整扩展完成后获取“下载网址”

这是我要实现的目标,实现Firebase的调整大小图像扩展名,上传图像,然后在调整大小完成后,将dowloadUrl的拇指添加到Cloud Firestore文档中。这个问题对我有帮助,但仍然无法识别出拇指并获得下载URL,这是到目前为止我们一直在尝试的方法。

注意:我将缩略图设置为root / thumbs

const functions = require('firebase-functions');
const { Storage } = require('@google-cloud/storage');
const storage = new Storage();

exports.thumbsUrl = functions.storage.object().onFinalize(async object => {
    const fileBucket = object.bucket;
    const filePath = object.name;
    const contentType = object.contentType;
    if (fileBucket && filePath && contentType) {
        console.log('Complete data');
         if (!contentType.startsWith('thumbs/')) {
             console.log('This is not a thumbnails');
             return true;
         }
         console.log('This is a thumbnails');


    } else {
        console.log('Incomplete data');
        return null;
    }
});
Run Code Online (Sandbox Code Playgroud)

javascript firebase google-cloud-functions firebase-storage

7
推荐指数
1
解决办法
157
查看次数

谷歌云函数中的 getSignedURL() 生成可以工作几天的链接,然后返回“SignatureDoesNotMatch”

我的 Firebase 存储getSignedUrl()下载链接可以使用几天,然后停止工作。错误信息是

SignatureDoesNotMatch
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
Run Code Online (Sandbox Code Playgroud)

去年夏天,在 GitHub 上对此进行了长时间的讨论,但我没有看到解决方案。

我正在考虑getDownloadURL()从前端使用而不是getSignedUrl()从后端使用。是getDownloadURL()不太安全的,然后getSignedUrl()

这是我的代码,主要是从文档中复制的:

SignatureDoesNotMatch
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
Run Code Online (Sandbox Code Playgroud)

node.js google-cloud-storage firebase firebase-storage

6
推荐指数
2
解决办法
6862
查看次数

通过 Cloud Function 检索 Firebase 存储图像链接

如何通过云功能检索 Firebase 中存储图像的下载链接?

我尝试了各种变体,包括下一个:

exports.getImgs = functions.https.onRequest((req, res) => {
    var storage = require('@google-cloud/storage')();

var storageRef = storage.ref;

console.log(storageRef);

storageRef.child('users/user1/avatar.jpg').getDownloadURL().then(function(url) {

    });
});
Run Code Online (Sandbox Code Playgroud)

node.js firebase google-cloud-functions firebase-storage

5
推荐指数
1
解决办法
2425
查看次数

云中的存储功能:如何获取下载网址?

在云功能内部,如何获取存储文件的下载URL?

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);
const storage = admin.storage();
Run Code Online (Sandbox Code Playgroud)

我可以使用此存储对象执行操作,storage.bucket().file(path).getMetadata()但是返回的元数据不包含firebase-signed-download-url。

文档说要创建参考并执行reference.getDownloadURL()。唯一的事情是,这似乎不适用于从firebase-admin软件包返回的存储对象。

firebase google-cloud-functions firebase-storage

5
推荐指数
0
解决办法
2626
查看次数