hubot 中的 Coffeescript 错误 "undefined is not a function"

Coffeescript error "undefined is not a function" in hubot

我正在调用我的 django 应用程序 returns 一个 JSON 对象,我正在使用以下代码来执行此操作:

robot.hear /lunch for today/i, (res) ->
    robot.http("http://my_ip_address/show")
        .header('Accept', 'application/json')
        .get() (err, res, body) ->
            data = JSON.parse body
            res.send data.food

但它 returns ERROR TypeError: undefined is not a function 在控制台中。这有什么问题吗?

我猜错误在这一行:

.get() (err, res, body) ->

您没有将回调作为参数传递给 get,而是在不带参数的情况下调用 get,然后尝试调用结果(即 undefined),就像这是一个功能。我的 CoffeeScript 已经生锈了,但我想你想要这个:

.get (err, res, body) ->

它可能是已安装的 hubot 和文档的不兼容版本,但我发现来自 http 方法的 res 没有发送,但是来自 /hear 命令的 res 发送。

robot.hear /lunch for today/i, (res) ->
    robot.http("http://my_ip_address/show")
        .header('Accept', 'application/json')
        .get() (err, msg, body) ->
            data = JSON.parse body
            res.send data.food

这应该可行,但要么是官方文档有误,要么是 hubot 的默认安装已过时。

应该是这样的:

module.exports= (robot) ->
  robot.hear /lunch for today/i, (msg) ->
    robot.http("http://my_ip_address/show")
      .header('Accept', 'application/json')
      .get() (err, res, body) ->
        console.log res.statusCode
        data = JSON.parse body
        msg.send data.food

我相信它失败的原因是因为您在 msg 的位置使用 res 然后在函数 .get() 的上下文中再次使用 res