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
我正在调用我的 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