node.js - response.send 不是函数

标签 node.js firebase google-cloud-functions

我正在编写一个 Firebase 函数,用于实现对话流聊天机器人的 Webhook。它不断生成错误,response.send不是一个函数

const functions = require('firebase-functions');
var request1 = require('request')
exports.webhook = functions.https.onRequest((request, response) => {
        console.log("request.body.result.parameters: ", request.body.result.parameters);
        let params = request.body.result.parameters;
        var options = {
            url: `https://islam360api.herokuapp.com/${params.find}`,
            json:true
        }
        request1(options, function(error, response, body){
            if(error) response.send({speech: "error in API call"});
            else response.send({speech: body.speech});
        });
    });

Firebase 日志 enter image description here

最佳答案

问题:这是影子变量名称的问题,当您尝试使用 firebase 函数响应对象发送响应时,实际上您正在将响应发送回 npm 请求模块的响应对象,这当然是不可能的

解决方案: 只需添加下划线或更改拼写,就可以开始了,看看代码: (注意从底部算起第五行的变化)

const functions = require('firebase-functions');
var request1 = require('request')
exports.webhook = functions.https.onRequest((request, response) => {
        console.log("request.body.result.parameters: ", request.body.result.parameters);
        let params = request.body.result.parameters;
        var options = {
            url: `https://islam360api.herokuapp.com/${params.find}`,
            json:true
        }
        request1(options, function(error, _response, body){
            if(error) response.send({speech: "error in API call"});
            else response.send({speech: body.speech});
        });
    });

关于node.js - response.send 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55304515/

相关文章:

firebase-authentication - google.auth.GoogleAuth() 需要什么 keyFile key ?

node.js - digital ocean 上的 dokku sass 错误

firebase - 向Cloud Firestore抖动插入数据时出错?

javascript - Cloud Firestore Query with React - 第一个字符是数字

javascript - Firebase:更新用户的个人资料不起作用

node.js - Firebase Cloud Firestore 触发器 context.auth 始终为 null

node.js - 如何使用 mongoose 在 updateOne 中使用 $cond?

javascript - 如何从 node.js 服务器将 javascript 缓冲区作为文件发送

jquery - Ajax请求汉字返回 '?'

Firebase 云函数触发器