Golang本地模块找不到如何解决
Golang本地模块找不到如何解决 在迁移代码以使用模块时遇到了困难:
我有两个模块,位于GOPATH中:
src/project/lib 和 src/project/app
src/project/lib/main.go
package lib
import (
"fmt"
)
func Try() {
fmt.Println("test")
}
src/project/app/main.go
package main
import (
"project/lib"
)
func main() {
lib.Try()
}
当 GO111MODULE=off 时,构建没有问题。
但是当切换到 GO111MODULE=on 时,无法再找到 lib 库
> go build
build app: cannot load project/lib: cannot find module providing package project/lib
感谢您的帮助
更多关于Golang本地模块找不到如何解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html
感谢,这样解释就明白了。
我认为需要使用重定向功能来映射到正确的路径。
更多关于Golang本地模块找不到如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
module NAME
go 1.14
你好,
GO111MODULE=on 选项将查找以下路径 NAME/lib。
在这种情况下,无论你使用 go mod init NAME 命令初始化模块时设置的是什么名称,都将作为起始路径,而不是 project。
你可以检查 go.mod 文件,在里面你会找到 module NAME 这一行。NAME 将成为你的入口包。
希望这对你有所帮助。
这是一个典型的Go模块迁移问题。当启用模块支持时,Go不再依赖GOPATH来解析包路径,而是使用模块系统。以下是解决方案:
方法1:将项目转换为模块
首先,在两个目录中分别创建 go.mod 文件:
src/project/lib/go.mod:
module project/lib
go 1.21
src/project/app/go.mod:
module project/app
go 1.21
require project/lib v0.0.0
replace project/lib => ../lib
然后构建:
cd src/project/app
go build
方法2:使用相对路径导入
修改app的导入语句:
src/project/app/main.go:
package main
import (
"../lib"
)
func main() {
lib.Try()
}
src/project/app/go.mod:
module project/app
go 1.21
方法3:将两个包放在同一个模块中
创建统一的go.mod文件:
src/project/go.mod:
module project
go 1.21
src/project/app/main.go:
package main
import (
"project/lib"
)
func main() {
lib.Try()
}
目录结构:
src/project/
├── go.mod
├── lib/
│ └── main.go
└── app/
└── main.go
推荐使用方法1,因为它最符合Go模块的设计理念,使用replace指令可以在开发阶段方便地引用本地模块。

