我正在使用Firebase函数的Node.js 8版本,并希望以Buffer
的形式从Google Cloud Storage检索文件到该函数。
这似乎很简单:
const admin = require('firebase-admin')
const getRawBody = require('raw-body')
async function myFunction (path) {
const bucket = admin.storage().bucket()
const file = await bucket.file(path).get()
console.log("All good so far.")
const buffer = await getRawBody(file.createReadStream()) // often fails.
}
我正在读取的文件很小(130kb)。
此 did 工作了一段时间,但现在始终失败,并显示内存限制错误或超时错误,提示Firebase / GCS问题。
我知道我可以增加该函数的内存限制,但是如果在一个很小的文件上失败,则说明工作中存在较大问题,并且在更大的文件上,它总是会失败。
是否有更好的方法将GCS文件转换为Buffer
?
如果没有,那是可以解决的问题吗?
答案 0 :(得分:0)
问题显然不是Google存储问题,而是其他地方的数据使用导致内存溢出。
结果,console.log
语句未记录到功能日志中,从而将原因混为一谈。
答案 1 :(得分:0)
当我从 get()
中删除 const file = await bucket.file(path).get()
时为我工作
我的工作代码是:
const admin = require('firebase-admin')
const getRawBody = require('raw-body')
async function getStream (path) {
const bucket = admin.storage().bucket()
const file = await bucket.file(path)
const buffer = await getRawBody(file.createReadStream())
}