Node.js Dialogflow,nodejs:文件系统模块-错误:EROFS:只读文件系统,打开';filename.pdf';错误(本机)

Node.js Dialogflow,nodejs:文件系统模块-错误:EROFS:只读文件系统,打开';filename.pdf';错误(本机),node.js,streaming,node-modules,dialogflow-es,actions-on-google,Node.js,Streaming,Node Modules,Dialogflow Es,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 = {

我使用文件系统模块来传输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函数部署代码。FF是只读系统,作为其无状态系统的一部分,这意味着您不能持久保存文件(因为这会与无状态系统冲突,并且不能保证这些文件在每个执行服务器/环境中都持久存在)


要动态承载内容,您需要使用另一个系统来承载文件。这可能是通过Firebase实现的,而不是在过程中保存,或者只是将文件内容存储在内存中。

这是Firebase函数吗?@NickFelker我不知道我是否明白你的意思,但基本上,这段代码应该在调用某个特定意图时调用。该意图已启用Webhook,并且该代码正在实现中。抱歉,如果我不够清楚,但我不确定我是否理解您对
firebase函数的确切含义。您的webhook托管在哪里?@NickFelker您是对的,这是firebase函数(
firebase的云函数