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 而不是在进程中保存,或者只是将文件内容存储在内存中。
我正在使用文件系统模块流式传输 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 而不是在进程中保存,或者只是将文件内容存储在内存中。