1.报错背景
golang版本19。若未初始化mod,执行go build时,会报以下错误:
go: go.mod file not found in current directory or any parent directory
2.错误原因
目录下缺少go.mod文件。
3.解决方案
3.1确保GO111MODULE是on或默认
GO111MODULE是go modules功能的开关:
GO111MODULE=off,关闭go。
modules功能,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,开启go modules功能,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令会根据当前目录中是否有go.mod文件来决定是否启用module功能。这种情况下可以分为两种情形:
当项目路径在GOPATH目录外部时, 设置为GO111MODULE = on
当项目路径位于GOPATH内部时,即使存在go.mod, 设置为GO111MODULE = off
3.2生成go.mod
在当前项目目录下,执行如下命令生成go.mod文件:
go mod init <项目文件夹名称>
3.3再生成go build
3.4go mod其它命令
go mod help命令进行相关命令和解释查看。
go mod init <项目目录名称> //初始化模块,自动生成go.mod文件
go mod download <path@version> //下载指定依赖
go mod edit -json //编辑go.mod文件 可选项有-json、-require和-exclude
go mod graph //以文本模式打印模块需求图
go mod tidy //删除错误或者不使用的modules
go mod vendor //将依赖包复制到项目的vendor目录
go mod verify //验证依赖是否正确
go mod why //查找依赖
go list -m all //显示依赖关系
go list -m -json all //显示完整依赖关系
4.总结
若未使用go:embed,生成的可执行文件,仍要与其他静态文件(若有css、javaScript、txt等)放在一起运行。
若使用go:embed,可将其他静态文件一同打包,统一一个可执行文件。详细在这,go:embed