2017-02-08 7 views
0

Согласно the docs, использование new Buffer(str) устарело, и люди должны использовать Buffer.from(str). С другой стороны, Buffer.from не был доступен в старых версиях узла. Согласно the docs он был добавлен в узел 5.10.0.Выберите «новый буфер» (str) »и« Buffer.from (str) »

Так что я предполагал, что я мог бы просто использовать такой код

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

, чтобы избежать предупреждений Deprecation при сохранении совместимости с более старыми версиями узла. Оказывается, это не работает должным образом. Некоторые старые версии узла, кажется, есть 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().

Смежные вопросы