是否可以在没有不必要的依赖关系的情况下生成对js友好的protobuf库?
我正在尝试在(现代)浏览器和模拟nodejs服务器之间实现grpc连接。
问题是,无论我使用Google闭包还是commonjs实现,我都会遇到很多我要解决的依赖项。
所以我现在正尝试将proto文件与其中的某些内容一起使用
import "google/rpc/status.proto";
import "google/api/annotations.proto";
import "protoc-gen-swagger/options/annotations.proto";
option go_package = "http://some.com/location/SomeAPI";
// swagger definitions
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = {
// ...stuff
// MyPingResponse
message MyPingResponse {
// some stuff here ...
// RPC response status
google.rpc.Status status = 5;
}
但是我遇到了与我在生成的js文件中很难使用的依赖项相同的问题。
(进入)服务器端处理需要其中一些,但是从js客户端和生成模拟服务器时,如何使用相同的原型文件?
尤其是google.rpc.Status
引起了问题,因为
当我使用grpc
和@grpc/proto-loader
设置服务时,只要删除不可靠的定义,就可以使服务器运行。但是我正在寻找的是protoc
输出,剥离了所有我不需要的东西
commonjs:
var google_api_annotations_pb = require('./google/api/annotations_pb.js');
goog.object.extend(proto, google_api_annotations_pb);
var google_rpc_status_pb = require('./google/rpc/status_pb.js');
goog.object.extend(proto, google_rpc_status_pb);
var protoc$gen$swagger_options_annotations_pb = require('./protoc-gen-swagger/options/annotations_pb.js');
goog.object.extend(proto, protoc$gen$swagger_options_annotations_pb);
或者对于grpc-web js:
var google_api_annotations_pb = require('./google/api/annotations_pb.js')
var google_rpc_status_pb = require('./google/rpc/status_pb.js')
var protoc$gen$swagger_options_annotations_pb = require('./protoc-gen-swagger/options/annotations_pb.js')
我必须将其注释掉才能使用。