【问题标题】:Dialogflow, nodejs: File System module - Error: EROFS: read-only file system, open 'filename.pdf' at Error (native)Dialogflow,nodejs:文件系统模块 - 错误:EROFS:只读文件系统,在错误时打开'filename.pdf'(本机)
【发布时间】:2018-10-29 10:50:06
【问题描述】:

我正在使用文件系统模块流式传输 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功能吗?
  • @NickFelker 我不知道我是否明白你的意思,但基本上,这段代码应该在调用某个 Intent 时调用。该 Intent 启用了 Webhook,并且此代码在 Fulfillment 中。抱歉,如果我不够清楚,但我不确定我是否理解您对 firebase functions 的确切含义。
  • 您的 webhook 托管在哪里?
  • @NickFelker 你说得对,它带有 firebase 功能 (Cloud Functions for Firebase)

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-06-08
    • 1970-01-01
    • 2020-05-18
    • 2023-02-12
    • 2020-07-10
    • 2015-01-02
    • 2014-06-01
    • 2015-01-22
    • 1970-01-01
    相关资源
    最近更新 更多