如何解决如何在 go 1.16 中嵌入 go.mod 和 go.sum
我想在父模块中嵌入一个子模块目录,但是golang提醒我pattern tpl/api_new/*: cannot embed file tpl/api_new/README.md: in different module
我知道我可以删除 go.mod & go.sum 然后在新项目生成时运行“go mod init && go get -u”。
底部是文件树和嵌入变量,我还能做些什么来嵌入 go.mod 和 go.sum? 谢谢~
//go:embed tpl/api_new/*
var apiNew embed.FS
├─api_new
│ │ .editorconfig
│ │ .gitignore
│ │ generate.go
│ │ go.mod
│ │ go.sum
│ │ makefile
│ │ README.md
│ │
│ ├─cmd
│ │ └─app
│ │ main.go
│ │
│ ├─config
│ │ config-dev.toml
│ │ config-live.toml
│ │ config-local.toml
│ │ config-prod.toml
│ │ config-stress.toml
│ │ config-trunk.toml
│ │
│ └─internal
│ └─app
│ ├─http
│ │ │ server.go
│ │ │
│ │ └─example
│ │ hello.go
│ │
│ ├─lib
│ │ ├─err
│ │ │ codecommon.go
│ │ │ err.go
│ │ │
│ │ ├─pms
│ │ │ init.go
│ │ │
│ │ └─util
│ │ md5.go
│ │ url.go
│ │
│ ├─model
│ │ │ init.go
│ │ │
│ │ ├─grpc
│ │ │ ├─roomaggregation
│ │ │ │ aggregation.proto
│ │ │ │ base.go
│ │ │ │
│ │ │ ├─roombase
│ │ │ │ base.proto
│ │ │ │ roombase.go
│ │ │ │
│ │ │ └─roomlist
│ │ │ base.proto
│ │ │ icon.go
│ │ │
│ │ ├─hrpc
│ │ │ │ init.go
│ │ │ │
│ │ │ └─efs
│ │ │ efs.go
│ │ │ init.go
│ │ │ option.go
│ │ │
│ │ └─redis
│ │ ├─attachInfo
│ │ │ index.go
│ │ │
│ │ ├─outing
│ │ │ index.go
│ │ │
│ │ ├─roomcity
│ │ │ roomcity.go
│ │ │
│ │ └─roomjump
│ │ index.go
│ │
│ └─service
│ │ init.go
│ │
│ └─example
│ hello.go
解决方法
存储库中的每个模块都单独存储在 module cache 中。按照设计,子目录中存在 go.mod
文件会导致整个子树从外部模块中完全删除。
如果您确实需要父目录中的模块可以访问 tpl/api_new
中的各个文件,那么您可以:
- 删除内部的
go.mod
和go.sum
文件,将源文件全部放在同一个模块中,或者 - 从
embed.FS
模块中的某个包(可能是一个internal
package)导出…/tpl/api_new
数据,并在父目录模块中导出该包的import
以便访问以编程方式获取数据。
我还能做些什么来嵌入 go.mod 和 go.sum?
没有
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。