Ольга, вы не можете использовать абсолютный путь в PROTO_PATH, если вы используете includeDirs.По-видимому, вам нужно поместить оба пути, то есть путь к myproto.proto И путь к google-proto-файлам, в includeDirs и использовать просто имя файла в качестве PROTO_PATH, тогда он работает просто отлично.Смотрите здесь:
https://github.com/grpc/grpc-node/issues/470
Вот модифицированный код, который работает.Обратите внимание, что мне также пришлось заменить «Type» на «int32» в myproto.proto.
const path = require('path');
const grpc = require('grpc');
const protoLoader = require('@grpc/proto-loader');
const protoFiles = require('google-proto-files');
const PROTO_PATH = 'myproto.proto';
const packageDefinition = protoLoader.loadSync(
PROTO_PATH,
{
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
includeDirs: ['node_modules/google-proto-files', 'proto']
},
);
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
const client = new protoDescriptor.Service('localhost:1111', grpc.credentials.createInsecure());
Надеюсь, это поможет.:)