Dialogflow,nodejs:文件系统模块-错误:EROFS:只读文件系统,在错误处打开“ filename.pdf”(本机)

时间:2018-10-29 10:50:06

标签: node.js streaming node-modules dialogflow actions-on-google

我正在使用文件系统模块流式传输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
    ...
});

有什么办法可以解决这个错误?

1 个答案:

答案 0 :(得分:0)

正如我们所讨论的,您正在使用Firebase Functions部署代码。 FF是只读系统,作为其无状态系统的一部分,这意味着您不能持久保存文件(因为这将与无状态系统发生冲突,并且不能保证这些文件在每个执行服务器/环境中都可以持久保存)。 / p>

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