2016-04-17 12 views
0

私はNodeJSチュートリアルを読んでおり、thisページに達しました。バッファには比較方法がありますか?

バッファオブジェクトの比較方法のコード例があります:

var buffer1 = new Buffer('ABC'); 
var buffer2 = new Buffer('ABCD'); 
var result = buffer1.compare(buffer2); 

if(result < 0) { 
    console.log(buffer1 +" comes before " + buffer2); 
}else if(result == 0){ 
    console.log(buffer1 +" is same as " + buffer2); 
}else { 
    console.log(buffer1 +" comes after " + buffer2); 
} 

これを投げる:

Executing the program.... $node main.js

/web/com/1460883529_55644/main.js:3 var result = buffer1.compare(buffer2);

^ TypeError: Object ABC has no method 'compare' at Object. (/web/com/1460883529_55644/main.js:3:22)

at Module._compile (module.js:456:26)

at Object.Module._extensions..js (module.js:474:10)

at Module.load (module.js:356:32)

at Function.Module._load (module.js:312:12)

at Function.Module.runMain (module.js:497:10)

at startup (node.js:119:16)

at node.js:929:3

トレースにオブジェクトがABCなくbuffer1と呼ばれているのは奇妙ですトレースによればcompareメソッドがないことを示します。 compareの方法を明確にしようとした例が私を混乱させました。誰かがここで何が起こったのか説明できますか?

+0

あなたのノードのバージョンは何ですか? – hassansin

+0

私は質問(http://www.tutorialspoint.com/nodejs/nodejs_buffers.htm)で指定されたチュートリアルのサーバーを通してコードを実行しています –

+0

ノードv0.10.32 –

答えて

1

このチュートリアルサイトでは、ノードv0.10を使用しています。これは非常に古く、チュートリアル自体で使用されている方法をサポートしていません。

このコードは、Node、v4.4.3の最新リリース、およびその他の最新リリースで正常に動作します。 compare()に関連するドキュメントはこちらです:https://nodejs.org/api/buffer.html#buffer_buf_compare_otherbuffer

余談として、あなたはより多くの最近のBuffer.from() APIの賛成でnew Buffer()の使用を停止することをお勧めします。これはコードの安全性を向上させると言われています。

+0

私はこのチュートリアルでコードを実行しています。ノードv0.10.32をクリックしてみると、ノードv0.10.32が使用され、エラーが発生していることがわかります。これは明らかにチュートリアルの意図ではないので、私の質問です。 –

+0

@ LajosArpad:非常に古いバージョンのNodeを使用しているようです。しかし、あなたのコメントにクリック可能なリンクは表示されません。現在のバージョンのNodeにアップデートすることをお勧めします。 –

+0

ジョン、私はあなたが私の質問(http://www.tutorialspoint.com/nodejs/nodejs_buffers.htm)でリンクを見たと思っていました。チュートリアルのWebサイトでコードを実行していますが、実際にNodeJSについて読む前に、実際にそれを扱う価値があるかどうかを判断しています。チュートリアルではそのバージョンを使用しているので、実際にはうまくいかない例をそこに置くことができるのは本当に不思議でした。ハッサンシンはこの方法がバージョン0.12で追加されたと言いました。つまり、彼らはバージョンを駄目にしました。実際の答えは私の質問です。彼らは間違ってチュートリアルの古いバージョンを必要以上に使用しています。 –

関連する問題