【问题标题】:Coffeescript error "undefined is not a function" in hubothubot中的Coffeescript错误“未定义不是函数”
【发布时间】:2015-09-17 21:59:13
【问题描述】:

我正在调用我的 django 应用程序,该应用程序返回一个 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

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

【问题讨论】:

  • 这一行看起来不对——.get() (err, res, body) ->
  • 删除了括号并发生了这个错误:ERROR SyntaxError: Unexpected token u at /home/cube26/hubot/scripts/server_actions.coffee:105:5, <js>:116:21 其中我的第 105 行是 data = JSON.parse body
  • 我插手了一点,发现由于res.send而发生了未定义的错误。关于为什么会发生这种情况的任何线索?

标签: coffeescript hubot


【解决方案1】:

应该是这样的:

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

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

【讨论】:

    【解决方案2】:

    我猜错误在这一行:

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

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

    .get (err, res, body) ->
    

    【讨论】:

    • 删除了括号并发生了这个错误:ERROR SyntaxError: Unexpected token u at /home/cube26/hubot/scripts/server_actions.coffee:105:5, <js>:116:21 我的第 105 行是data = JSON.parse body
    • 当您尝试将 undefined 解析为 JSON 时,通常会遇到这种情况。通过该函数进行调试,看看你的 err、res 和 body 参数返回了什么。
    • 我插手了一点,发现由于res.send而发生了未定义的错误。关于为什么会发生这种情况的任何线索?
    • 服务器返回什么? err 有值吗?
    【解决方案3】:

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

    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的默认安装已过时。

    【讨论】:

      猜你喜欢
      • 2017-08-14
      • 2014-08-03
      • 1970-01-01
      • 2020-11-07
      • 2015-02-24
      • 1970-01-01
      • 2013-06-21
      • 2014-05-18
      • 2013-06-06
      相关资源
      最近更新 更多