【发布时间】:2017-11-22 07:28:00
【问题描述】:
我正在尝试使用来自电子应用程序的 node.js dgram 包发送 udp 数据包。 send 方法调用 Buffer、Uint8Array 或字符串。但是,当我尝试使用 Buffer 或 UintArray 时出现类型错误。确切的错误是:TypeError: First argument must be a buffer or a string.
我可以在 Node.js dgram 代码中看到它正在使用 !(buffer instanceof Buffer 检查缓冲区。如果我尝试在我的代码中的缓冲区上使用 instanceof,它只会返回 object 作为类型,而如果我尝试 'Buffer.isBuffer()' 它会返回 true。我已经尝试了节点提供的用于创建缓冲区buffer 的所有方法,但没有任何结果。 Send 确实接受字符串,但后来我遇到了各种编码问题,感觉有点 hacky。
看起来 electron 正在运行节点 7.4.0。
我从这里看到我的选择:
- 编辑 node.js 代码
- 不知何故覆盖我的缓冲区对象返回的 instanceof
- 找出将缓冲区正确编码为字符串的解决方案。
有什么想法吗?
【问题讨论】:
-
您是否使用了
Buffer.isBuffer(),例如Buffer类或您的实际实例?您是否也尝试过使用Buffer.from()创建缓冲区? -
我尝试过使用 Buffer.from 和 new Buffer()。我也弄错了,如果我在缓冲区上尝试 instanceof Buffer ,它会返回 true。我认为问题可能出在 Node dgram 模块依赖于不同版本的 Buffer 上。无论如何我可以通过重新编译来更改节点代码吗?
标签: javascript node.js sockets udp electron