2010-12-10 7 views
0

"Twitter-Node"(npm install twitter-node)をインストールしようとしています。ノードJSのバージョン.3.2-pre。Twitter-NodeがNode.jsをビルドできない(npm install twitter-node)

私が試してインストールしようとすると、次のエラーが表示されます。私が間違っているかもしれないことについてのいかなる考え?かなりストレートなインストールが私に似ているようです。私ができた成功しすぎソケット-IOをインストール...

m ERR! Error: [email protected] preinstall: `./build.sh` 
npm ERR! `sh` failed with 1 
npm ERR!  at ChildProcess.<anonymous> (/usr/local/lib/node/.npm/npm/0.2.12- 1/package/lib/utils/exec.js:25:18) 
npm ERR!  at ChildProcess.emit (events.js:34:17) 
npm ERR!  at ChildProcess.onexit (child_process.js:164:12) 
npm ERR! 
npm ERR! Failed at the [email protected] preinstall script. 
npm ERR! This is most likely a problem with the twitter-node package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  ./build.sh 

alt text

答えて

5

シンプルなソリューション

ただ、ここからそれをつかむ:npm
https://github.com/patmcnally/twitter-node

モジュールです古い(8月31日最後の更新)および符号の場合、Nodeの組み込み機能を使用する代わりに、独自のBase64エンコーダをコンパイルします。インストールするには

  1. をアーカイブをダウンロードし、フォルダに
  2. CDを、それを抽出し、npm install .
  3. を実行して素敵な一日を:)

旧答え

インストールはgccをコンパイルするために実行されます。ノードBuffer(C++の実装)に依存するモジュールbase64は、3.xのそれにかなりの変更があったため、爆発します。

Waf: Entering directory `/home/ivo/.local/lib/node/.npm/twitter-node/0.0.2/package/vendor/node-base64/build' 
[1/2] cxx: base64.cc -> build/default/base64_1.o 
../base64.cc: In function ‘v8::Handle<v8::Value> base64_encode_binding(const v8::Arguments&)’: 
../base64.cc:178: error: ‘class node::Buffer’ has no member named ‘data’ 
../base64.cc:178: error: ‘class node::Buffer’ has no member named ‘length’ 
../base64.cc: In function ‘v8::Handle<v8::Value> base64_decode_binding(const v8::Arguments&)’: 
../base64.cc:199: error: ‘class node::Buffer’ has no member named ‘data’ 
../base64.cc:199: error: ‘class node::Buffer’ has no member named ‘length’ 
Waf: Leaving directory `/home/ivo/.local/lib/node/.npm/twitter-node/0.0.2/package/vendor/node-base64/build' 
Build failed: -> task failed (err #1): 
    {task: cxx base64.cc -> base64_1.o} 

This commit 2人のメンバを削除し、静的なインラインメソッドに置き換えました。

Local<Object> buffer = args[0]->ToObject(); 
char *str = base64_encode((unsigned char*)Buffer::Data(buffer), Buffer::Length(buffer),&len); 

その後npm rebuild twitter-nodeを実行すれば完了です。これにより

Buffer *buffer = ObjectWrap::Unwrap<Buffer>(args[0]->ToObject()); 
char *str = base64_encode((unsigned char*)buffer->data(), buffer->length(),&len); 

.npm/twitter-node/0.0.2/package/vendor/node-base64/base64.cc

あなたはこのような行177/178198/199を交換する必要があります!インストールを使用しないでください。変更を再ダウンロードして上書きするためです。

PS npm.local/lib/nodeにシンボリックリンクを作成していないので、それをインポートするにはrequire('[email protected]')を使用しなければなりませんでしたが、簡単に修正できます。

更新

私は、これは陽気です、モジュールを見てみました、彼らはただONE TIMEのbase64エンコードを使用するようにNode.jsのに変更して故障しやすいです80キロバイトlibにコンパイル。

// Returns a Basic Auth header fit for HTTP. 
var basicAuth = function basicAuth(user, pass) { 
    return "Basic " + b64.encode(user + ":" + pass); 
}; 

これはまったく同じことをして、Node.jsのに他のすべての変化に爆発しません:

new Buffer(user + ':' + pass).toString('base64') 
+0

興味深い...私はファイルエクスプローラで.npmフォルダに参照するとき( ubuntuに)私はそこにtwitter-nodeフォルダがないのですか?何かご意見は?上記のスクリーンショットを投稿しました。 – aherrick

+0

奇妙なことに、とにかくもっと簡単な解決法で私の答えを更新しました。トップをご覧ください:) –

+0

あなたのフィードバックに感謝します。それで私のための修正は何ですか?私はNPM経由でインストールしようとしています。この場合にはうまくいかないでしょうか? NPMなしで試してインストールする必要がありますか?それをどうするかわからない。ありがとう。 – aherrick

関連する問題