Buffer.swap16 不是函数

Buffer.swap16 is not a function

我已经在 NodeJS 中测试了一些缓冲区交换功能,但在我的 Meteor 项目中它不起作用。

有人能告诉我原因吗?

节点:

var CRC = new Buffer([0x20,0x40]);
console.log(CRC.swap16());   //  OUTPUT:  <Buffer 40 20>

Meteor.js

var CRC = new Buffer([0x20,0x40]);
console.log(CRC.swap16());   //  OUTPUT:  TypeError: CRC.swap16 is not a function

有人可以帮助我吗?知道这可能是版本问题。但是暂时无法解决

还有办法得到这个东西运行流星吗?

Buffer.swap16() 方法已在 5.10.0 中添加,而 Meteor 使用 NodeJS 版本 4。

你可以从NodeJS source复制这个方法实现,它很简单(有小的修改):

function swap(b, n, m) {
  const i = b[n];
  b[n] = b[m];
  b[m] = i;
}

Buffer.prototype.swap16 = function swap16() {
  const len = this.length;
  if (len % 2 !== 0) {
    throw new RangeError('ERR_INVALID_BUFFER_SIZE', '16-bits');
  }
  for (var i = 0; i < len; i += 2) {
    swap(this, i, i + 1);
  }
  return this;
};