【发布时间】:2012-05-20 09:16:33
【问题描述】:
我正在使用hubot(特别是hubot-hipchat)并想使用https://github.com/scriby/asyncblock 节点模块。在hubot中导入/需要节点模块的正确方法是什么?
我 cd 到我安装 hubot (~/hubot) 的地方并做了
编辑 hubot/packages.json 将 hubot-hipchat,asyncblock 添加到依赖项部分。
"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时,我收到错误:ERROR 错误:找不到模块'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_modules ??
【问题讨论】:
-
我可以回答您的部分问题:
require.paths在 Node 0.5 中被删除。您遇到的任何使用require.paths.push的文章或源代码都已过时。我假设你在 Node 0.6.x 上? -
节点-v:v0.6.17。是的,我知道它已被弃用/删除。令我困惑的是为什么它没有在 ./node_modules 中找到模块 - 因为它在该目录中找到我的其他模块(如 hubot-hipchat)就好了。
标签: node.js coffeescript hubot