簡單的解決方案
就從這裏搶吧:
https://github.com/patmcnally/twitter-node
上npm
該模塊舊(最後更新8月31日)和由de標記,它編譯自己的base64編碼器,而不是使用Node的內置功能。
要安裝:
- 下載存檔並解壓縮
- 光盤放入該文件夾,然後運行
npm install .
- 有一個愉快的一天:)
老答案
安裝運行gcc編譯一個base64
模塊依賴於節點Buffer
類(C++實現),因爲在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刪除了兩個成員,並用靜態內聯方法替換它們。
在.npm/twitter-node/0.0.2/package/vendor/node-base64/base64.cc
您需要更換線177/178
和198/199
它看起來像這樣:
Buffer *buffer = ObjectWrap::Unwrap<Buffer>(args[0]->ToObject());
char *str = base64_encode((unsigned char*)buffer->data(), buffer->length(),&len);
有了這個:
Local<Object> buffer = args[0]->ToObject();
char *str = base64_encode((unsigned char*)Buffer::Data(buffer), Buffer::Length(buffer),&len);
然後運行npm rebuild twitter-node
就大功告成了!不要使用安裝,因爲它會重新下載並覆蓋更改。
PS:我不得不使用require('[email protected]')
才能導入它,因爲npm
沒有在.local/lib/node
中創建符號鏈接,但是您可以輕鬆地自行修復它。
更新
我看看模塊,這是熱鬧,他們編一個80KB的lib與改變的Node.js只使用一個使用Base64編碼ONE TIME這是容易出現故障 。
// 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 2010-12-10 10:39:26
奇怪的是,無論如何,我用更簡單的解決方案更新了我的答案,請參閱頂部:) – 2010-12-10 10:51:33
感謝您的反饋。那麼最適合我的是什麼?我正嘗試通過NPM進行安裝。在這種情況下這不起作用嗎?我是否需要嘗試在沒有NPM的情況下安裝它?不知道該怎麼做。謝謝。 – aherrick 2010-12-10 15:50:28