我是node.js的初学者 当hubot听到预期的消息,评估并执行脚本目录中不存在的脚本时,我想这样做。
我在代码下面写了代码,但我无法发送消息。
错误消息
[Thu Feb 16 2017 20:22:34 GMT+0900 (JST)] ERROR ReferenceError: msg is not defined
我应该在哪里修复它来定义msg?
hubot_dir /脚本/ load_test.coffee
path = require('path')
module.exports = (robot) ->
robot.hear /loadscript/i, (msg) ->
script_name = "dynamictest.coffee"
script_dir = path.resolve(__dirname, "../dynamicscripts")
dynamictest = require(script_dir + "/" + script_name)
robot.loadFile(script_dir, script_name)
robot.emit "dynamic", {
robot: robot,
msg: msg
}
delete require.cache[script_dir + "/" + script_name]
hubot_dir / dynamicscripts / dynamictest.coffee
module.exports = (robot) ->
robot.on "dynamic" , (dynamic) ->
robot.logger.info "output log"
msg.send "test"
答案 0 :(得分:0)
当您调用robot.emit
时,您传递的对象包含您调用msg的变量(尽管名称完全是任意的)。此对象作为名为dynamic
的参数传递,因此,为了引用msg
,您需要将其称为dynamic.msg
:
module.exports = (robot) ->
robot.on "dynamic" , (dynamic) ->
robot.logger.info "output log"
dynamic.msg.send "test"
但是,我应该指出,对于编写loadscript
函数的方式,每次调用它时都会加载dynamiccript.coffee的其他实例。例如,当您第一次拨打loadscript
时,它会加载第二个文件并发送回测试'。第二次,它将再次加载第二个文件,您将得到两个回复说“测试”。第三次它会再次加载,你会收到三条消息,等等。