来自属于同一项目的单独包的未定义导入

Undefined import from a separate package that is part of the same project

这是 GitHub 上的 project/repo 的结构:

|-grpc_definitions
|--v0
|---myservice.pb.go
|---myservice.proto
|-api

我fork了这个项目,在本地添加了一些东西;这是新结构:

|-grpc_definitions
|--v0
|---myservice.pb.go
|---myservice.proto
|---new_service.pb.go
|---new_service.proto
|-api
|--myservice.go

api/myservice.go 中,我导入了 grpc 定义:

package api

import grpc_definitions_v0 "github.com/<username>/<repo>/grpc_definitions/v0"

var s grpc_definitions_v0.NewServiceServer // this line does not compile

var ss grpc_definitions_v0.ServiceServer // this line is fine

go.mod 对于 api:

module github.com/<<owner>>/<<repo>>/api

go 1.14

require (
   github.com/<<owner>>/<<repo>>/grpc_definitions v0.0.0-20200723024905-6c479f56d135
...
)

如果我查看 new_service.pb.goNewServiceServer 已定义并且是正确包的一部分。它导入所有已经存在的东西就好了,只有我添加的东西导入不正确。

如果我查看 grpc_definitions_v0.ServiceServer 的定义,它看起来像是 导入 grpc_definitions_v0 的特定提交 而不是本地文件.

如何获取我的代码以导入文件 added/changed?

编辑:我尝试 go get 从提交中进行更改,但由于我正在处理 repo 的分支,它说:module declares its path as: github.com/<<owner>>/<<repo>>/grpc_definitions but was required as: github.com/<<me>>/<<repo>>/grpc_definitions

我通过在终端中对 go mod 使用 replace 来修复此问题:

$ go mod edit -replace="github.com/<<owner>>/<<repo>>/grpc_definitions=/<<localpathtoclone>>/<<repo>>/grpc_definitions"

这指向它使用本地文件。查看更多信息:Using forked package import in Go