2017-02-08 2 views
0

the docsによると、new Buffer(str)を使用すると、代わりにBuffer.from(str)を使用する必要があります。一方、ノードの古いバージョンではBuffer.fromは利用できませんでした。 the docsに従って、ノード5.10.0に追加されました。「新しいバッファ(str)」と「バッファー(str)」のどちらかを選択してください

だから、私は単にノードの旧バージョンとの互換性を維持しながら、非推奨の警告を避けるために

buf = Buffer.from ? Buffer.from(str) : new Buffer(str); 

のようなコードを使用することができることを前提としていました。期待通りに動作しないことが判明しました。ノードの一部の古いバージョンではfrom方法が、例外がスローされます互換性のないものを持っているように見えるん:

TypeError: this is not a typed array. 
    at Function.from (native) 

は、どのように私は、右のバージョンを選ぶに行きますか?どういうわけかprocess.versionをテストする必要がありますか?または、ノードと互換性があるが、ノードと同じではない他のエンジンの可能性に適しているかもしれない、よりクリーンなソリューションがありますか?

答えて

2

新しいバッファAPIはbackported to v4.x in v4.5.0でした。それ以前のバージョンのBuffer.from()は同じものではないUint8Array.from()です。

より良いAPIテストは、Buffer.allocUnsafe()の存在をチェックしている可能性があります。

関連する問題