无法解析 .proto 文件中的导入

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)

  • 不幸的是没有解决这个问题。 (2认同)