2017-06-19 123 views
0

我试图使用电子应用程序中的node.js dgram包发送udp数据包。 send方法调用Buffer,Uint8Array或字符串。但是,当我尝试使用缓冲区或UintArray时发生类型错误。确切的错误是:TypeError:第一个参数必须是缓冲区或字符串。通过Node.js数据报在电子发送UDP数据包

我可以在Node.js dgram代码中看到它正在使用!(buffer instanceof Buffer检查缓冲区。如果我尝试在我的代码中使用instanceof在缓冲区中它只是返回对象作为类型,而如果我尝试'Buffer.isBuffer()'它将返回true。我已经尝试了节点提供的所有创建缓冲区的方法buffer,但没有结果。发送不接受字符串,但后来我遇到了编码的各种问题,这感觉有点哈克。

它看起来像电子运行节点7.4.0。

我从这里看到我的选择是:

  1. 编辑Node.js的代码
  2. 不知何故会忘的instanceof为我的缓冲区对象返回
  3. 图出来正确编码缓冲区作为一个解决方案串。

任何想法?

+0

你有没有使用'Buffer.isBuffer()',喜欢上了类'Buffer'或你的实际情况?你有没有尝试过使用'Buffer.from()'创建缓冲区? – RoyalBingBong

+0

我试过使用Buffer.from和新的Buffer()。另外我错了,如果我尝试在缓冲区上使用instanceof Buffer,它将返回true。我认为这个问题可能与Node dgram模块依赖于不同版本的Buffer有关。无论如何,我可以通过重新编译来更改节点代码吗? –

回答

1

为了得到这个工作,我只是要我的全球缓冲值指向节点缓冲模块像这样:const Buffer = window.require('buffer').Buffer