go引入自建包名报错 package XXX is not in std和goland设置GO111MODULE提示冲突
warning:
这篇文章距离上次修改已过196天,其中的内容可能已经有所变动。
报错解释:
package XXX is not in GOROOT (...)
表示包XXX
不在 Go 的标准库目录下。goland设置GO111MODULE提示冲突
通常意味着你在 GoLand 中设置了GO111MODULE
环境变量,并且当你尝试使用自己的包时出现了路径解析的问题。
解决方法:
- 确保你的自建包位于
$GOPATH/src
目录下,或者在启用 Go Modules 的情况下位于项目内的go.mod
文件所在目录的子目录中。 如果你在使用 Go Modules(Go 1.11及以上版本),确保你的 GoLand 项目设置中启用了 Go Modules 支持。可以这样设置:
- 打开 GoLand 的
File
->Settings
(或GoLand
->Preferences
在 macOS)。 - 在
Go
->Go Modules (vgo)
下,选择Enable Go Modules (vgo) integration
。 - 如果你的项目已有
go.mod
文件,IDE 应该自动检测并使用 Go Modules,无需额外设置。
- 打开 GoLand 的
如果你的项目没有使用 Go Modules,而你又想使用它们,你可以通过以下步骤启用:
- 在项目根目录下运行
go mod init <module-name>
初始化一个新的go.mod
文件。 确保
GO111MODULE
环境变量设置为on
,可以通过以下命令来设置:go env -w GO111MODULE=on
注意:这将全局设置
GO111MODULE
,如果你只想对当前项目启用 Go Modules,可以在项目根目录下创建一个名为.env
的文件,并在其中写入GO111MODULE=on
。
完成这些步骤后,重新编译你的项目,IDE 应该能够正确解析包的路径。如果仍然有问题,请检查你的项目目录结构和 go.mod
文件是否正确配置。
评论已关闭