我刚迁移到Cloud Functions 1.0并尝试使用Cloud Functions shell / emulator在本地运行函数(使用https://firebase.google.com/docs/functions/local-emulator处的说明)
其中一个功能是使用下面的代码将文件上传到云存储,然后为它生成网址....但是我收到了以下错误:
SigningError:无法在没有
client_email
的情况下对数据进行签名。
const bucket = gcs.bucket(bucketName);
bucket.upload(localFilePath, {destination: destinationPath})
.then(data => {
const file = data[0];
return file.getSignedUrl({
action: 'read',
expires: '01-01-2099'
});
我可以通过明确设置keyFileName
来在本地解决这个问题,如下所示,但似乎没有必要这样做
const gcs = require('@google-cloud/storage')({keyFilename: 'service-account.json'});
上面的链接提到" Cloud Firestore和实时数据库触发器已经拥有足够的凭据,并且不需要额外的设置" (我从db write中触发此代码)。我在任何情况下都设置了GOOGLE_APPLICATION_CREDENTIALS
env变量,但看起来并没有把它捡起来。