Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 错误:匿名调用方没有storage.objects.get访问Google云存储对象Nodejs API_Node.js_Api_Firebase Storage - Fatal编程技术网

Node.js 错误:匿名调用方没有storage.objects.get访问Google云存储对象Nodejs API

Node.js 错误:匿名调用方没有storage.objects.get访问Google云存储对象Nodejs API,node.js,api,firebase-storage,Node.js,Api,Firebase Storage,我试图按照教程在firebase中添加图像。我试着用NodeJS语法重写代码。代码工作正常,我在firebase中有我的图片,但图像无法显示,链接通知错误。下面是我的最终代码。 Middleware.js const googleStorage = require('@google-cloud/storage'); const Rest = require('../utils/Restware') const {format} = require('util'); const storage

我试图按照教程在firebase中添加图像。我试着用NodeJS语法重写代码。代码工作正常,我在firebase中有我的图片,但图像无法显示,链接通知错误。下面是我的最终代码。 Middleware.js

const googleStorage = require('@google-cloud/storage');
const Rest = require('../utils/Restware')
const {format} = require('util');

const storage = googleStorage({
  projectId: 'my-project-id',
  keyFilename: 'D:/nodejs/project/app/config/serviceAccountKey.json'
});

const bucket = storage.bucket("my-bucket-link");

const getImage = function(req, res, callback) {
    let file = req.file;

    uploadImageToStorage(file, function (errorCode, errorMessage, httpCode, errorDescription, result) {
        if (errorCode) {
            return Rest.sendError(res, errorCode, errorMessage, httpCode, errorDescription);
        }
        return Rest.sendSuccessOne(res, result, httpCode);
    })
        
}
/**
 * Upload the image file to Google Storage
 * @param {File} file object that will be uploaded to Google Storage
 */
const uploadImageToStorage = (file, callback) => {
    try {
          let newFileName = `${Date.now()}_${file.originalname}`;
    
          let fileUpload = bucket.file(newFileName);
      
          const blobStream = fileUpload.createWriteStream({
            metadata: {
              contentType: file.mimetype
            }
          });

          blobStream.on('error', (error) => {
            return callback(1, error, 422, null, null);
          });

          blobStream.on('finish', () => {
            // The public URL can be used to directly access the file via HTTP.
            const url = format(`https://storage.googleapis.com/${bucket.name}/${fileUpload.name}`);
            return callback(null, null, 200, null, url);
          });
          blobStream.end(file.buffer);
    } catch(error) {
        return false;
    }
}

module.exports = {getImage}
这是server.js

const Express = require('express');
const Image = require('../middlewares/UploadToFirebase')

let App = Express();
const Multer = require('multer');

const multer = Multer({
    storage: Multer.memoryStorage(),
    limits: {
      fileSize: 5 * 1024 * 1024 
    }
  });
App.post('/v1/upload', multer.single('file'), Image.getImage);
当我在《邮递员》中运行它时,它会通知

{
    "data": "https://storage.googleapis.com/project-9e319.appspot.com/1603876183998_9cHg9fYPW3WoRzeZoaHp8X.png",
    "message": "",
    "result": "ok"
}
然而,当我在firebase登记时

当我点击图片链接时

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.</Details>
</Error>
有人知道我错过了哪些步骤吗?如果需要更多信息,一定要通知我。谢谢