シンプルなソリューション
ただ、ここからそれをつかむ:npm
上
https://github.com/patmcnally/twitter-node
モジュールです古い(8月31日最後の更新)および符号の場合、Nodeの組み込み機能を使用する代わりに、独自のBase64エンコーダをコンパイルします。インストールするには
:
- をアーカイブをダウンロードし、フォルダに
- CDを、それを抽出し、
npm install .
- を実行して素敵な一日を:)
旧答え
インストールは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/178
と198/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')
興味深い...私はファイルエクスプローラで.npmフォルダに参照するとき( ubuntuに)私はそこにtwitter-nodeフォルダがないのですか?何かご意見は?上記のスクリーンショットを投稿しました。 – aherrick
奇妙なことに、とにかくもっと簡単な解決法で私の答えを更新しました。トップをご覧ください:) –
あなたのフィードバックに感謝します。それで私のための修正は何ですか?私はNPM経由でインストールしようとしています。この場合にはうまくいかないでしょうか? NPMなしで試してインストールする必要がありますか?それをどうするかわからない。ありがとう。 – aherrick