Прото реализация с зависимостями на стороне клиента js - PullRequest
0 голосов
/ 01 июня 2019

Можно ли сгенерировать 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')

, который я должен закомментировать, чтобы иметь возможность использовать.

...