Можно ли сгенерировать js-дружественные библиотеки protobuf без ненужных зависимостей?
Я пытаюсь реализовать соединение grpc между (современным) браузером и сервером mocking nodejs.
проблема в том, что, использую ли я google closure или реализацию commonjs, я получаю кучу зависимостей, которые пытаюсь решить.
Так что я сейчас пытаюсь использоватьфайл прото с некоторыми из этих вещей внутри
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-файлами.
Некоторые изони необходимы для обработки (go) на стороне сервера, но на стороне клиента 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')
, который я должен закомментировать, чтобы иметь возможность использовать.