首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS中的Firebase NodeJS错误

NodeJS中的Firebase NodeJS错误
EN

Stack Overflow用户
提问于 2021-03-10 14:19:09
回答 1查看 74关注 0票数 0

下面有下面的代码可以将文件从NodeJS上传到防火墙

代码语言:javascript
复制
const admin = require("firebase-admin");
const serviceAccount = require("../service_account.json");
const Strings = require('../lang/strings');
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    storageBucket: `${Strings.DEFAULT_BUCKET_NAME}.appspot.com`
});
module.exports = {
    firebase: admin
};

现在,我将上面的内容导入到以下文件:

代码语言:javascript
复制
 const firebase = require("./firebase").firebase;

                 firebase.storage().bucket(bucketName).upload(uploadPath, {
                    gzip: true,
                    metadata: {
                        cacheControl: 'public, max-age=31536000',
                    },
                }).then((response) => {
                    console.log("Uploaded to Firebase with response=" + JSON.stringify(response));
                    fs.unlink(uploadPath, (err, data) => {

                    });
                }).catch((error) => {
                    console.log("Firebase Upload Error=" + error);
                    fs.unlink(uploadPath, (err, data) => {

                    });
                });

但是上传之后,我得到了以下错误:

Firebase Error=Error: firebase-adminsdk-eveve@xxx.iam.gserviceaccount.com没有storage.objects.create访问Google对象的权限。

我该怎么解决这个问题。我只想简单地将我的文件存储在Firebase存储上。我不想与接口。我想严格地与Firebase仪表板进行接口。

EN

回答 1

Stack Overflow用户

发布于 2021-03-11 12:57:48

根据火基正式文件,您可以使用管理云存储API并上传文件,您的代码如下所示:

代码语言:javascript
复制
const admin = require("firebase-admin");

const serviceAccount = require("../service_account.json");

const Strings = require('../lang/strings');

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    storageBucket: `${Strings.DEFAULT_BUCKET_NAME}.appspot.com`
});

var bucket = admin.storage().bucket();

var filename = "PATH.png"

async function uploadFile() {

  const metadata = {
    metadata: {
    cacheControl: 'public, max-age=31536000',
  };

  // Uploads a local file to the bucket
  await bucket.upload(filename, {
    // Support for HTTP requests made with `Accept-Encoding: gzip`
    gzip: true,
    metadata: metadata,
  });

console.log(`${filename} uploaded.`);

但是,我可以看到,您正在尝试从[消]火基函数上传一个文件到Firebase。请试用以下方法:

代码语言:javascript
复制
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp()

exports.uploadFile = functions.https.onRequest((request, response) => {
  const bucket = admin.storage().bucket(bucketname);
  bucket.upload(tempFilePath, {
    // By setting the option `destination`, you can change the name of the
    // object you are uploading to a bucket.
    destination: destination,
    metadata: {
      cacheControl: 'public, max-age=31536000',
    },
  });

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66566604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档