node.js - 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
...
});
有什么办法可以处理这个错误吗?
解决方案
正如我们所讨论的,您正在使用 Firebase 函数部署代码。FF 是只读系统,作为其无状态系统的一部分,这意味着您无法永久保存文件(因为这会与无状态系统冲突,并且无法保证这些文件在每个执行服务器/环境中都存在)。
要动态托管内容,您需要使用另一个系统来托管文件。这可以通过 Firebase云存储而不是保存在进程中,或者只是将文件内容存储在内存中。
推荐阅读
- c# - 如何在 dotnet core 中创建可重复使用的 POST 视图对象?
- ios - 有没有在标签栏开关上调用的方法?
- javascript - 如何为作为字符串存储在变量中的表中的特定单元格着色
- reactjs - 如何使用 Azure 应用服务设置服务器以接受 POST 请求
- python - TypeError:“函数”和“函数”的实例之间不支持“>”
- html - 如何在 Angular 应用程序中发出 POST 请求?
- mysql - 使用 LOAD DATA FROM S3 处理 Aurora 错误
- django - imageField.save() 和 add() 是否将整个模型保存在 django 中?
- css - 带有默认 HTML 按钮样式的 Rails link_to
- scala - 只有空间的柱子在火花中被清除