Javascript DialogFlow Webhook:错误:EROFS:只读文件系统,打开';。node-xmlhttprequest-sync-2';

Javascript DialogFlow Webhook:错误:EROFS:只读文件系统,打开';。node-xmlhttprequest-sync-2';,javascript,firebase,npm,xmlhttprequest,dialogflow-es,Javascript,Firebase,Npm,Xmlhttprequest,Dialogflow Es,我正在为使用XMLHttpRequest的Firebase创建DialogFlow应用程序并使用云函数部署实现。 但出现了以下错误 错误:EROFS:只读文件系统,打开“.node-xmlhttprequest-sync-2” 错误(本机) 在Object.fs.openSync(fs.js:642:18) 在Object.fs.writeFileSync(fs.js:1348:33) 发送时(/user\u code/node\u modules/xmlhttprequest/lib/xmlh

我正在为使用XMLHttpRequest的Firebase创建DialogFlow应用程序并使用云函数部署实现。 但出现了以下错误

错误:EROFS:只读文件系统,打开“.node-xmlhttprequest-sync-2” 错误(本机) 在Object.fs.openSync(fs.js:642:18) 在Object.fs.writeFileSync(fs.js:1348:33) 发送时(/user\u code/node\u modules/xmlhttprequest/lib/xmlhttprequest.js:477:10)

我的代码是这样的

'use strict';

const admin = require('firebase-admin');
const functions = require('firebase-functions');

const DialogflowApp = require('actions-on-google').DialogflowApp; 
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
const googleAssistantRequest = 'google';

const Actions = {
  UNRECOGNIZED_DEEP_LINK: 'deeplink.unknown',
  TEST_HTTPREQUEST: 'test.httprequest'
};

const testHttpRequest = app => {
    var req = new XMLHttpRequest();
    req.open('GET', 'http://www.google.com', false);
    req.send(); 
    if (req.status === 200) {
      console.log(req.responseText);
    }
}

const actionMap = new Map();
actionMap.set(Actions.TEST_HTTPREQUEST, testHttpRequest);

exports.mytestapp = functions.https.onRequest((request, response) => {
  const app = new DialogflowApp({ request, response });
  console.log(`Request headers: ${JSON.stringify(request.headers)}`);
  console.log(`Request body: ${JSON.stringify(request.body)}`);
  app.handleRequest(actionMap);
});

有人知道如何解决此错误吗?

您的函数
testHttpRequest
需要使用
app
响应用户从Dialogflow发出的请求。使用
ask
tell
方法响应请求。例如,在
testHttpRequest
中的if语句之后,可以添加:

app.tell('This response came from Cloud Functions for Firebase!');
它告诉Google客户端库上的操作在您从Google模拟器或Google助手设备上的操作调用助手应用程序时发送字符串作为对您请求的响应(请参阅Google测试文档上的操作)

您还可能遇到操作名称问题。您在此处的履行中提到的操作(
deeplink.unknown
test.httprequest
)也必须列出,否则您的代码将永远不会被触发。谷歌助手还需要一个受欢迎的意图。默认情况下,Dialogflow中的欢迎意图有一个
输入操作。欢迎
未包含在您的代码中,因此在匹配代码和Dialogflow代理中列出的操作之前,您的代码可能不会被触发


此外,外部HTTP调用(在谷歌网络之外)。

您解决了错误吗?