2012-05-11 12 views
3

私はhubot(特にhubot-hipchat)を使用しており、https://github.com/scriby/asyncblockノードモジュールを使用します。ハブトでノードモジュールをインポート/要求する正しい方法は何ですか?hubotのnode_pathの設定方法

IのCD私はhubot(〜/ hubot)をインストールし、

編集hubot/packages.jsonは、依存関係のセクションにasyncblockをhubot-hipchatを追加しました。どこへ

"dependencies": { 
    "hubot-hipchat": ">= 1.0.4", 
    "hubot": "2.1.4", 
    "hubot-scripts": ">=2.0.4", 
    "optparse": "1.0.3", 
    "asyncblock": "2.0.8" 
    } 

私はその後、私のスクリプト/ 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のサーバー上のシステムコマンドをexecししようとしている:

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を見ないのですか?

+0

を使用して正しい上記のタスクを完了した後、私はあなたの質問の一部に答えることができます: 'require.paths'は、ノード0.5で削除されました。 'require.paths.push'を使う記事やソースコードは古くなっています。私はあなたがノード0.6.xにいると仮定しますか? –

+0

ノード-v:v0.6.17。うん、私はそのdeprecated /削除を認識しています。私を混乱させるのは、モジュールが./node_modulesで見つからないのです。なぜなら、そのディレクトリ内の他のモジュール(hubot-hipchatなど)がうまく見つかるからです。 – rynop

答えて

0

あなたのスクリプトはrequire('asyncblock')でどこにありますか? ~/hubotのサブディレクトリにありますか?そうでない場合、そのrequire関数は~/hubot/node_modulesに表示されません。

そのスクリプトのmodule.pathsの値をチェックすると、スクリプトのrequireが参照する非グローバルパスがすべて表示されます。

+0

私のcoffeescriptファイルは〜/ hubot/scriptsにあります。このスクリプトは、hubot-hipchat(〜/ hubot/node_modulesにある)のメソッドも使用しています。 〜/ hubot/node_modules/asyncblock – rynop

+0

ここには何らかのシンボリックリンクが含まれていますか?つまり、 '〜/ hubot/scripts'は実際のディレクトリであり、'〜/ hubot/scripts/test.coffee'は実際のファイルですか?もう一度、 'test.coffee'から' module.paths'の値を報告してください。 –

+0

〜/ hubot/scriptsは本当のdirです。 〜/ hubot/scripts/deploy.coffee(私のスクリプト)はdeploy.coffee - > /home/ubuntu/git/mln-admin/hubot/scripts/deploy.coffeeへのシンボリックリンクです。しかし、このスクリプトでは、上記のように、〜/ hubot/node_modules/hubot-hipchat /にあるオブジェクトを使用しています。例えば、 module.pathsはいくつかありません: /home/ubuntu/git/mln-admin// home/ubuntu/node_modules、/ home/ubuntu/git/node_modules、/ home/ubuntu/node_modules、/ home/ubuntu/node_modules、/ home/ubuntu// home/node_modules、/ node_modules – rynop

-1

これははるかに簡単です。私はハブとヒップハットも使用しています。あなたがやらなければならないことは、次のとおりです。

cd hubot-dir; 
npm install asyncblock 

ここにあなたが守るべきものだ。

$ npm install asyncblock 
npm http GET https://registry.npmjs.org/asyncblock 
npm http 200 https://registry.npmjs.org/asyncblock 
npm http GET https://registry.npmjs.org/asyncblock/-/asyncblock-2.0.9.tgz 
npm http 200 https://registry.npmjs.org/asyncblock/-/asyncblock-2.0.9.tgz 
npm http GET https://registry.npmjs.org/fibers/0.6.7 
npm http GET https://github.com/scriby/UglifyJS/tarball/1.2.5-6 
npm http 200 https://registry.npmjs.org/fibers/0.6.7 
npm http GET https://registry.npmjs.org/fibers/-/fibers-0.6.7.tgz 
npm http 200 https://registry.npmjs.org/fibers/-/fibers-0.6.7.tgz 
npm http 200 https://github.com/scriby/UglifyJS/tarball/1.2.5-6 
npm http GET https://registry.npmjs.org/node-gyp 
npm http 200 https://registry.npmjs.org/node-gyp 
npm http GET https://registry.npmjs.org/node-gyp/-/node-gyp-0.4.5.tgz 
npm http 200 https://registry.npmjs.org/node-gyp/-/node-gyp-0.4.5.tgz 
npm http GET https://registry.npmjs.org/ansi 
npm http GET https://registry.npmjs.org/glob 
npm http GET https://registry.npmjs.org/graceful-fs 
npm http GET https://registry.npmjs.org/fstream 
npm http GET https://registry.npmjs.org/minimatch 
npm http GET https://registry.npmjs.org/rimraf 
npm http GET https://registry.npmjs.org/mkdirp 
npm http GET https://registry.npmjs.org/nopt 
npm http GET https://registry.npmjs.org/semver 
npm http GET https://registry.npmjs.org/tar 
npm http GET https://registry.npmjs.org/which 
npm http GET https://registry.npmjs.org/request 
npm http 200 https://registry.npmjs.org/ansi 
npm http GET https://registry.npmjs.org/ansi/-/ansi-0.0.4.tgz 
npm http 200 https://registry.npmjs.org/graceful-fs 
npm http GET https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.8.tgz 
npm http 304 https://registry.npmjs.org/mkdirp 
npm http 200 https://registry.npmjs.org/fstream 
npm http GET https://registry.npmjs.org/fstream/-/fstream-0.1.18.tgz 
npm http 200 https://registry.npmjs.org/rimraf 
npm http GET https://registry.npmjs.org/rimraf/-/rimraf-2.0.2.tgz 
npm http 304 https://registry.npmjs.org/nopt 
npm http 200 https://registry.npmjs.org/glob 
npm http GET https://registry.npmjs.org/glob/-/glob-3.1.9.tgz 
npm http 200 https://registry.npmjs.org/semver 
npm http GET https://registry.npmjs.org/semver/-/semver-1.0.14.tgz 
npm http 304 https://registry.npmjs.org/request 
npm http 200 https://registry.npmjs.org/minimatch 
npm http GET https://registry.npmjs.org/minimatch/-/minimatch-0.2.5.tgz 
npm http 200 https://registry.npmjs.org/which 
npm http 200 https://registry.npmjs.org/tar 
npm http GET https://registry.npmjs.org/which/-/which-1.0.5.tgz 
npm http GET https://registry.npmjs.org/tar/-/tar-0.1.13.tgz 
npm http 200 https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.8.tgz 
npm http 200 https://registry.npmjs.org/ansi/-/ansi-0.0.4.tgz 
npm http 200 https://registry.npmjs.org/fstream/-/fstream-0.1.18.tgz 
npm http 200 https://registry.npmjs.org/rimraf/-/rimraf-2.0.2.tgz 
npm http 200 https://registry.npmjs.org/glob/-/glob-3.1.9.tgz 
npm http 200 https://registry.npmjs.org/minimatch/-/minimatch-0.2.5.tgz 
npm http 200 https://registry.npmjs.org/semver/-/semver-1.0.14.tgz 
npm http 200 https://registry.npmjs.org/which/-/which-1.0.5.tgz 
npm http 200 https://registry.npmjs.org/tar/-/tar-0.1.13.tgz 
npm http GET https://registry.npmjs.org/abbrev 
npm http GET https://registry.npmjs.org/lru-cache 
npm http GET https://registry.npmjs.org/inherits 
npm http GET https://registry.npmjs.org/inherits 
npm http GET https://registry.npmjs.org/inherits 
npm http GET https://registry.npmjs.org/block-stream 
npm http 304 https://registry.npmjs.org/abbrev 
npm http 200 https://registry.npmjs.org/inherits 
npm http GET https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz 
npm http 200 https://registry.npmjs.org/inherits 
npm http 200 https://registry.npmjs.org/inherits 
npm http 200 https://registry.npmjs.org/lru-cache 
npm http GET https://registry.npmjs.org/lru-cache/-/lru-cache-1.1.0.tgz 
npm http 200 https://registry.npmjs.org/block-stream 
npm http GET https://registry.npmjs.org/block-stream/-/block-stream-0.0.5.tgz 
npm http 200 https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz 
npm http 200 https://registry.npmjs.org/lru-cache/-/lru-cache-1.1.0.tgz 
npm http 200 https://registry.npmjs.org/block-stream/-/block-stream-0.0.5.tgz 

[email protected] install /tmp/hubot/node_modules/asyncblock/node_modules/fibers 
node ./build.js 

`linux-ia32` exists; skipping build 
[email protected] ./node_modules/asyncblock 
├── [email protected] 
└── [email protected] ([email protected]) 
0

ここでの問題は、あなたのプロジェクトに追加されていないNPMモジュールを参照しているということです。これはpackage.jsonファイルで依存関係としてasyncblockを保存します

npm install --save asyncblock 

:あなたのhubotフォルダのルートから、次のコードを実行します。 したがって、herokuに展開するか、シフトやその他のクラウドサービスを開いた場合、サービスは自動的にモジュールをダウンロードしてロボットに利用できるようにします。

asyncblock= require 'asyncblock' 

はコーヒースクリプト