我是golang的新手,在创建新模块时遇到了一些问题
我想在我的主包中添加一个git子模块,这样我就可以同时对两个包进行工作和提交
模块http_fs
被添加为像这个一样的数字子模块
git submodule add git@github.com:xxx/http_fs.git repo/http_fs
主包装
package main
import "repo/http_fs"
http_fs
模块的go.mod
看起来像这个
module github.com/xxx/http_fs
go 1.19
当我尝试用go run main.go
运行主包时,我得到了这个错误
package repo/http_fs is not in GOROOT (/usr/local/go/src/repo/http_fs)
文件结构
./main.go // main package
./repo/http_fs/http_fs.go
更新
主包装中的go.mod
module main
go 1.19
replace github.com/xxx/http_fs v1 => ./repo/http_fs
错误的原因
package repo/http_fs is not in GOROOT (/usr/local/go/src/repo/http_fs)
/usr/local/go/src/repo/http_fs
中的go.mod
声明的是模块github.com/xxx/http_fs
,而不是repo/http_fs
。
您需要导入与go.mod
中指定的完全相同的模块,即github.com/xxx/http_fs
在主模块的go.mod
中使用replace
指令:
replace github.com/xxx/http_fs v1.2.3 => ./repo/http_fs
Replace指令告诉编译器在哪里可以找到模块的源。