首页 > 解决方案 > Dialogflow,nodejs:文件系统模块 - 错误:EROFS:只读文件系统,在错误时打开“filename.pdf”(本机)

问题描述

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

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

标签: node.jsstreamingnode-modulesdialogflow-esactions-on-google

解决方案


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

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


推荐阅读