问题描述
我在路径中创建了以下.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;
}
,并在另一个路径中跟随.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;
}
但是我的IDE(goland)无法解析repository-service.proto中的导入,而且当我使用protoc命令生成.pb.go文件时,我将遇到以下错误:
microservice/internal/proto-files/domain/repository.proto: File not found.
解决方法
首先,您的导入路径最好像这样:
import "domain/repository.proto";
您必须将原始文件的路径添加到Goland。为此,您必须转到setting
> Languages & Frameworks
> Protocol Buffers
,然后取消选中Configure automatically
。
然后在导入路径上添加此路径。
microservice/internal/proto-files
,
我也有同样的问题;当我使用“导入 domail/file-name.proto”语句时,IDE 给了我错误消息:
Cannot resolve import 'domain/file-name.proto"
最后我发现了我的问题:父文件夹没有被标记为“Resources Root”,所以我标记了它并解决了我的问题。