golang:项目迁移到 go mod 踩坑记

2019-11-13 09:33:05 +08:00
 guonaihong

记录项目迁移到 go mod 里面的一些坑

下面聊的一些坑都是在模拟环境上说的,除非想要 n+1,就不露真实目录结构了。一开始项目的目录结构是 src 风格,和现在的 github 风格很不一样,记录下迁移遇到的问题。

模拟环境

目录结构

.
└── src
    ├── main.go
    └── nocode
        └── nocode.go

main.go 内容

package main

import (
	"fmt"
	"nocode"
)

func main() {
	nocode.NoCode()
	fmt.Println("vim-go")
}

nocode.go

package nocode

import (
	"fmt"
)

func NoCode() {
	fmt.Printf("no code\n")
}

迁移过程

src/main.go:5:2: cannot find package "nocode" in any of:
	/home/guo/go-version/go1.13.1/src/nocode (from $GOROOT)
	/home/guo/go/src/nocode (from $GOPATH)
go mod init main
build command-line-arguments: cannot load nocode: malformed module path "nocode": missing dot in first path element
module main

replace nocode => ./src/nocode

go 1.13
go: nocode: parsing src/nocode/go.mod: open /home/guo/talk_go_mod/src/nocode/go.mod: no such file or directory

no code
vim-go

重点总结

github

https://github.com/guonaihong/gout

12412 次点击
所在节点    Go 编程语言
26 条回复
lcj2class
2019-11-13 19:36:43 +08:00
guonaihong
2019-11-13 19:42:12 +08:00
@TypeErrorNone  我懂你的意思了,和在 github 做法类似。
guonaihong
2019-11-13 19:48:54 +08:00
@znood 本地包,我上面展示了用 replace 指令搞定。还有别的坑吗?
zunceng
2019-11-13 19:55:01 +08:00
10w+行代码的项目 我一天就改完了
小坑平推就完了
guonaihong
2019-11-13 22:17:59 +08:00
@zunceng 厉害厉害。
zunceng
2019-11-14 10:47:20 +08:00
@guonaihong 去年 11 月 我看 prometheus 的 node_exporter 用了 go mod
然后我也把项目用了 node_export 如果没出意外 go dep 转 go mod 一行命令就转了
但我们项目里有个库 接口变了 我记得 golang-x-crypto 上的 也没改几行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/619023

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX