如何从gcs获取一个signedUrl?

时间:2019-01-19 17:59:37

标签: node.js google-cloud-storage

使用云函数返回我的图像的signedUrl列表。现在,我收到错误SigningError: Cannot sign data without client_email .

我尝试仅执行const storage = new Storage();而未添加配置对象,但仍然遇到相同的错误。我什至尝试过:

const storage = new Storage({ 
  projectId: projectId,
  keyFilename:'./cert.json' //my service account file
});

但是从此我什么也没得到,甚至没有错误消息。我的函数只是返回一个空数组[]

如何配置内容,以便可以重新获得签名的URL?

const functions = require('firebase-functions');
const admin = require('firebase-admin');    
import * as _ from 'lodash'
const {Storage} = require('@google-cloud/storage');
const projectId = 'myProject';
const storage = new Storage({ 
  projectId: projectId,
});

export const getPublicURLS = async()=>{
  let bucketName='myBucket.appspot.com'
  const [files] = await storage.bucket(bucketName).getFiles({prefix:'myTestPrefix'});
  files.shift(); //remove the folder object
  let list = await _.map(files, (file)=>{
    return file.getSignedUrl({
      action: 'read',
      expires: '03-17-2025'
    }).then(results => {
      console.log(results);
      const url = results[0];
      return url;
    })
    .catch(err => {
      console.error('ERROR:', err);
    });
  })
  return list;
}

0 个答案:

没有答案