在主包中添加模块作为git子模块

  • 本文关键字:模块 git 包中 添加 go
  • 更新时间 :
  • 英文 :


我是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指令告诉编译器在哪里可以找到模块的源。

最新更新