Node.js protobuf 包括
Node.js protobuf includes
我们正在尝试在 Node 中实现一个 grpc 服务。
我们有一个 common.proto
文件,我们可以在其中描述常见的消息,我们可以在不同的服务中重复使用。
到目前为止,我们只在 Go 中实现了服务,并在 Go 或 PHP 中使用它们。这一切都很好。
现在我们想在 Node 中实现一项服务,我们已经从 common.proto
生成了 pb.js 文件,我们称它为 service.proto
.
问题是,在 service_pb.js
中它生成以下代码:require("../common_pb.js")
这当然是无效的,因为 common_pb.js
的路径是 node_modules/@company/common-node/common_pb.js
,而现在它在 node_modules/@company/common-node/common_pb.js
.
中查找它
我仍然无法弄清楚我们如何才能使它在 Node 上正常工作,所以如果有人有解决方案那就太好了。
这是我们提出的解决方案:
项目树如下所示:
root/
├─ common/
│ ├─ common.proto
├─ some-service/
│ ├─ some-service.proto
├─ other-service/
│ ├─ other-service.proto
如果我们在 some-service.proto
中需要来自 common.proto
的消息定义,我们有 import "common.proto";
并且当 运行 项目时我们包含公共目录。
我们改变了这个,所以我们在 some-service.proto
文件中写了 common/common.proto
,而当 运行 protoc
只是包含了 .
这是根上面树中所示的目录。这样,包含的内容就变成了 require('../common/common_pb.js');
而不是 require('../common_pb.js');
.
我们正在尝试在 Node 中实现一个 grpc 服务。
我们有一个 common.proto
文件,我们可以在其中描述常见的消息,我们可以在不同的服务中重复使用。
到目前为止,我们只在 Go 中实现了服务,并在 Go 或 PHP 中使用它们。这一切都很好。
现在我们想在 Node 中实现一项服务,我们已经从 common.proto
生成了 pb.js 文件,我们称它为 service.proto
.
问题是,在 service_pb.js
中它生成以下代码:require("../common_pb.js")
这当然是无效的,因为 common_pb.js
的路径是 node_modules/@company/common-node/common_pb.js
,而现在它在 node_modules/@company/common-node/common_pb.js
.
我仍然无法弄清楚我们如何才能使它在 Node 上正常工作,所以如果有人有解决方案那就太好了。
这是我们提出的解决方案:
项目树如下所示:
root/
├─ common/
│ ├─ common.proto
├─ some-service/
│ ├─ some-service.proto
├─ other-service/
│ ├─ other-service.proto
如果我们在 some-service.proto
中需要来自 common.proto
的消息定义,我们有 import "common.proto";
并且当 运行 项目时我们包含公共目录。
我们改变了这个,所以我们在 some-service.proto
文件中写了 common/common.proto
,而当 运行 protoc
只是包含了 .
这是根上面树中所示的目录。这样,包含的内容就变成了 require('../common/common_pb.js');
而不是 require('../common_pb.js');
.