Sia*_*osh 7 go protocol-buffers goland
我在路径中创建了以下 .proto 文件:microservice/internal/proto-files/domain/repository.proto
syntax = "proto3";
package domain;
option go_package = "microservice/internal/gRPC/domain";
message Repository {
int64 id = 1;
string name = 2;
int64 userId = 3;
bool isPrivate = 4;
}
Run Code Online (Sandbox Code Playgroud)
并在另一个路径中跟随 .proto 文件:microservice/internal/proto-files/service
syntax = "proto3";
package service;
option go_package = "microservice/internal/gRPC/service";
import "microservice/internal/proto-files/domain/repository.proto";
//RepositoryService Definition
service RepositoryService {
rpc add (domain.Repository) returns (AddRepositoryResponse);
}
message AddRepositoryResponse {
domain.Repository addedRepository = 1;
Error error = 2;
}
message Error {
string code = 1;
string message = 2;
}
Run Code Online (Sandbox Code Playgroud)
但是我的 IDE(goland) 无法解析 repository-service.proto 中的导入,而且当我使用 protoc 命令生成 .pb.go 文件时,我将面临以下错误:
microservice/internal/proto-files/domain/repository.proto: File not found.
Run Code Online (Sandbox Code Playgroud)
ttr*_*asn 18
首先,你的导入路径最好是这样的:
import "domain/repository.proto";
Run Code Online (Sandbox Code Playgroud)
您必须将 proto 文件的路径添加到 Goland。对于你必须去setting> Languages & Frameworks>Protocol Buffers然后取消Configure automatically。
之后在导入路径上添加此路径。
microservice/internal/proto-files
Run Code Online (Sandbox Code Playgroud)