我有谷歌。profobuf。*导入到proto文件中(由go中编写的GRPC服务器使用)。当同一个proto文件用于在NodeJS中实现GRPC客户端时,我遇到了问题。
详细信息:
GRPC服务器使用的原型文件(用go编写):
技术原型
syntax = "proto3";
package api;
import "google/protobuf/duration.proto";
import "google/protobuf/empty.proto";
message Info {
string desc = 1;
google.protobuf.Duration ttl = 2;
}
service Tech {
rpc BasicInfo(google.protobuf.Empty) returns (Info) {}
}
当NodeJs中写入的GRPC客户端使用此选项时:
GetTech信息。js(前几行)
'use strict';
const PROTO_PATH = __dirname + '/../../api/tech.proto';
const grpc = require('grpc');
const apiProto = grpc.load(PROTO_PATH).api;
我得到以下错误:
/Users/././node_modules/protobufjs/dist/protobuf.js:4720
throw Error("failed to import '"+importFilename+"' in '"+filename+"': file not found");
^
Error: failed to import '/Users/././api/google/protobuf/duration.proto' in '/Users/././api/register.proto': file not found
at Builder.ProtoBuf.Builder.BuilderPrototype.import (/Users/././node_modules/protobufjs/dist/protobuf.js:4720:35)
at Object.ProtoBuf.loadJson (/Users/././node_modules/protobufjs/dist/protobuf.js:5225:26)
at Object.ProtoBuf.loadProto (/Users/././node_modules/protobufjs/dist/protobuf.js:5128:25)
at Object.ProtoBuf.loadProtoFile (/Users/././node_modules/protobufjs/dist/protobuf.js:5174:52)
at Object.load (/Users/././node_modules/grpc/index.js:135:26)
at Object.<anonymous> (/Users/././src/api/getTechInfo.js:5:23)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
问题在于proto文件中的导入:
import "google/protobuf/duration.proto";
import "google/protobuf/empty.proto";
解决这些导入的建议方法是什么?提前谢谢。
使用:
Node v8.9.4
"google-protobuf": "^3.5.0",
"grpc": "^1.10.1",