我正在使用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/

10-10 23:09