首页 > 解决方案 > 将数据从firebase函数上传到firebase存储?

问题描述

我有一个使用 node.js 运行的网站,后端运行在 Firebase Functions 上。我想将一堆 JSON 存储到 Firebase 存储。当我在 localhost 上运行时,下面的代码片段工作得很好,但是当我将它上传到 Firebase 函数时,它会显示Error: EROFS: read-only file system, open 'export-stock-trades.json. 有谁知道如何解决这个问题?

    fs.writeFile(fileNameToReadWrite, JSON.stringify(jsonObjToUploadAsFile), function(err){
        bucket.upload(fileNameToReadWrite, {
            destination: destinationPath,
        });

        res.send({success: true});
    });

标签: node.jsfirebasegoogle-cloud-functionsfirebase-storage

解决方案


我无法确定,因为您的函数的大部分上下文都丢失了,但看起来您的函数正在尝试先将文件写入本地磁盘(fs.writeFile),然后上传(bucket.upload)。

os.tmpdir()在 Cloud Functions 上,您编写的代码仅对节点中的 /tmp 具有写入权限。在文档中阅读更多相关信息 :

文件系统中唯一可写的部分是 /tmp 目录,您可以使用它在函数实例中存储临时文件。这是一个本地磁盘挂载点,称为“tmpfs”卷,其中写入该卷的数据存储在内存中。请注意,它将消耗为该功能提供的内存资源。

这可能是导致您的代码失败的原因。

顺便说一句,如果您要上传的数据在内存中,您不必像现在这样先将其写入文件。您可以改为使用file.save()


推荐阅读