Прото реализация с зависимостями на стороне клиента js
Можно ли сгенерировать js-friendly прототипные библиотеки без ненужных зависимостей?
Я пытаюсь реализовать соединение grpc между (современным) браузером и имитирующим сервером 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 и для создания сервера-макета, как я могу использовать один и тот же файл proto?
Особенно, 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')
который я должен закомментировать, чтобы иметь возможность использовать.