Go项目报错:package iptracker/cmd1不在GOROOT中,求解决方案
基于Cobra构建CLI应用时的导入错误问题
项目结构
├── cmd1 │ └── root.go ├── go.mod ├── go.sum └── main.go
代码文件
main.go
package main import ( "iptracker/cmd1" ) func main() { cmd1.Execute() }
cmd1/root.go
package cmd1 import ( "github.com/spf13/cobra" ) var ( rootCmd = &cobra.Command{ Use: "Cobra", Short: "Iptracker app", Long: "IpTracker app", } ) func Execute() error { return rootCmd.Execute() }
go.mod
module iptracker go 1.19 require github.com/spf13/cobra v1.6.1 require ( github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/spf13/pflag v1.0.5 // indirect )
错误信息
main.go:4:2: package iptracker/cmd1 is not in GOROOT (/usr/local/go/src/iptracker/cmd1)
环境配置
GOPATH: /home/username/Go GOROOT: /usr/local/go
已执行go mod init iptracker和go mod tidy命令,但问题仍存在。
解决方法
启用Go模块模式:确保
GO111MODULE环境变量设置为on,Linux/macOS执行:export GO111MODULE=onWindows系统执行:
set GO111MODULE=on确认工作目录:切换到项目根目录(包含
go.mod文件的目录),重新执行:go mod tidy正确运行应用:使用
go run .代替go run main.go启动应用,这样Go会正确识别模块上下文并处理内部包导入。
若问题仍未解决,可尝试删除go.sum文件后重新执行go mod tidy,或检查项目是否放在GOPATH/src目录下(Go模块模式在该目录内可能存在兼容问题,建议将项目放在GOPATH之外的路径)。
内容的提问来源于stack exchange,提问作者NoMaster
相关产品推荐
相关产品推荐

