我应该安装哪个Node.js模块才能使用Google Protocol Buffers?

6

看起来有几个模块可用于Node.js与协议缓冲区一起使用,这些模块由多个人维护,有些比较活跃。我发现https://github.com/chrisdew/protobuf可以正常工作。但是否有经过验证和认证的可靠路径呢?

4个回答

11
毫无疑问,更好、更完整、设计更美观的是:Protobuf.js
干杯!

1
如果你使用的是 Windows 操作系统,那么 chrisdew 的实现可能不是最佳选择,因为在这种情况下,你必须确保所有 C++ 库都已安装。否则,你可能会遇到类似于 https://github.com/chrisdew/protobuf/issues/22 的问题。因此,我建议使用 Protobuf.js 会更好。 - Muhammad Raihan Muhaimin

2

2

2

除了 Java、Python 和 C++,Protobuf 没有官方实现。对于 node.js,你可能想选择 npm 上的 chrisdew 实现。我个人使用自己的 分支,因为我需要处理 int64。


你能详细说明一下为什么你fork了Chris Dew的实现吗?你的使用场景是什么?谢谢。 - shargors
@shargors:我正在开发一个Node.js实现的Steam。Steam广泛使用protobuf并经常传递int64。chrisdew的模块将int64转换为数字,导致精度丢失,这对我来说是不可接受的。 - Nikolai
你的意思是说,当proto buf int64转换为JavaScript Number时,会丢失精度吗?那怎么可能呢? - shargors
如果这是一个问题,为什么不在GitHub上检查Chris Dew的代码库并进行修复呢? - shargors
1
@shargors:JavaScript中的数字是64位浮点数-足以存储32位整数,但不足以存储64位整数。尝试在JS控制台中键入“76561197976267165”(不带引号)并查看结果。我已经向chrisdew的repo添加了一个拉取请求(https://github.com/chrisdew/protobuf/pull/16),但他似乎不喜欢它,而我并不在意。 - Nikolai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接