0

我已经设置了 $GOPATH,并导入了我在 $GOPATH/src 中的部分源代码。

我需要导入的包由我编写并存储在 GOPATH/src 我将其命名为 otelkafkago 并且它的路径是 GOPATH/src/otelkafkago

我的硬盘上的其他地方还有一个代码库,当我尝试编译它时,它给了我

main.go:51:2: package otelkafkago is not in GOROOT (/usr/local/go/src/otelkafkago)

我已将其导入为

import(
    "otelkafkago"
)

以下是我在构建过程中的屏幕截图,

kshitijpatil@PNQ-KPATIL checkoutservice % echo $GOPATH
/Users/kshitijpatil/go/
kshitijpatil@PNQ-KPATIL checkoutservice % go build
main.go:51:2: package otelkafkago is not in GOROOT (/usr/local/go/src/otelkafkago)
kshitijpatil@PNQ-KPATIL checkoutservice % env GOPATH=/Users/kshitijpatil/go go build
main.go:51:2: package otelkafkago is not in GOROOT (/usr/local/go/src/otelkafkago)
kshitijpatil@PNQ-KPATIL checkoutservice % 
4

1 回答 1

3

从 Go 1.16开始,默认启用模块感知模式,无论go.mod文件是否存在于当前工作目录或父目录中。

更准确地说,GO111MODULE环境变量现在默认为on. 要切换到以前的行为,请设置GO111MODULEauto

在您的情况下,迁移到 go modules会更容易,即使设置GO111MODULEauto可能会有所帮助。

正如所评论的,您的第一行go.mod应该是:

module myProject

您的另一个“otelkafkago”项目,它应该有自己go.modmodule otelkafkago第一行,并首先构建。

于 2021-04-20T06:41:49.483 回答