Dialogflow, nodejs: File System module - Error: EROFS: read-only file system, open 'filename.pdf' at Error (native)

Dialogflow, nodejs: File System module - Error: EROFS: read-only file system, open 'filename.pdf' at Error (native)

我正在使用文件系统模块流式传输 PDF 文件,然后访问该文件供以后使用。当我在编译器中尝试它时它有效,但是当我在 Dialogflow 中进行部署时,它失败并出现错误:

Error: EROFS: read-only file system, open 'filename.pdf' at Error (native)

这是代码:

const fs = require('fs');
const request = require('request');

var downloadRequest = {
    url: "http://www.axmag.com/download/pdfurl-guide.pdf",
    method: 'GET'
}

var file = fs.createWriteStream("filename.pdf");
request(downloadRequest).pipe(file);

file.on('finish', function(){
    var downloadedFile = fs.createReadStream("filename.pdf");
    // Other code which accesses 'downloadedFile' takes place below
    ...
});

有什么办法可以处理这个错误吗?

正如我们所讨论的,您正在使用 Firebase Functions 部署代码。 FF 是只读系统,作为其无状态系统的一部分,这意味着您无法持久保存文件(因为这会与无状态系统冲突,并且无法保证这些文件在每次执行时都保持不变 server/environment) .

要动态托管内容,您需要使用另一个系统来托管文件。这可以通过 Firebase cloud storage 而不是在进程中保存,或者只是将文件内容存储在内存中。