我正在使用hubot(特别是hubot hipchat),并希望使用https://github.com/scriby/asyncblock节点模块。在hubot中导入/需要节点模块的正确方法是什么?
我cd到安装hubot(~/hubot)的地方
编辑hubot/packages.json将hubot hipchat,asyncBlock添加到dependencies部分。
"dependencies": {
"hubot-hipchat": ">= 1.0.4",
"hubot": "2.1.4",
"hubot-scripts": ">=2.0.4",
"optparse": "1.0.3",
"asyncblock": "2.0.8"
}
然后在scripts/test.coffee脚本中执行以下操作:
asyncblock = require('asyncblock')
当我启动hubot时,得到错误:错误:找不到模块'asyncBlock'
~/hubot/node_modules/asyncBlock存在。所以我试着:
require.paths.push('/home/ubuntu/hubot/node_modules')
现在我不知道“找不到错误”,但我得到了一个新的错误:
ERROR Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
我做错什么了?
我只是想在我运行hubot的ubuntu服务器上执行一个系统命令:
asyncblock((flow) ->
exec('node -v', flow.add())
result = flow.wait()
msg.send result
)
编辑:
因此,如果我将node_path env var设置为以下值,它将工作:
env NODE_PATH="/usr/lib/nodejs:/usr/share/javascript:/home/ubuntu/hubot/node_modules"
为什么不按惯例在hubot/node_模块中查找?是吗?
最佳答案
您的require('asyncblock')
脚本在哪里?它在~/hubot
的子目录中吗?否则,它的require
函数将不会在~/hubot/node_modules
中查找。
检查该脚本中module.paths
的值,查看脚本require
所查看的所有非全局路径。
关于node.js - 如何为hubot设置node_path,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10557056/