请教 Go Mod 到底怎么用...被虐哭..

2019-07-12 14:11:56 +08:00
 richzhu

各位大佬好,想学习 go mod 但是一脸懵逼,当我 go get 了一个包后,在 IDE 里写代码,找不到这个包,求指点我到底哪里错了。。完全是按照网上教程做的呢,我看写教程的人怎么就都可以 我就不行 T_T

问题:

// 下载新包
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
go get gopkg.in/mgo.v2
也试过 在 mian.go 中写入 import gopkg.in/mgo.v2 然后运行 go mod tidy 也不行,详见最后一行

IDE 中无法使用

手动输入 import 也没有用,就是找不到 mgo 这个包,开始明明都 go get 也 go mod tidy 了呀

为了详细说明我遇到的问题,我记录下了详细步骤,供大佬参考

操作步骤:

cd connectToMongo/  # 项目路径,项目名称为 connectToMongo
go mod init # 初始化

返回报错:
go: cannot determine module path for source directory /Users/rich/Office/GitLab/connectToMongo (outside GOPATH, no import comments)

touch go.mod # 由于初始化失败,手动创建
echo "module connectToMongo" >> go.mod # 查了相关教程向里面手动输入 module + 项目名

go mod tidy # 执行好后 go.mod 文件会多出一行
cat go.mod  # 查看一下

##go.mod 内容##

module connectToMongo

go 1.12

在 IDE 中创建 main.go 代码如下

package main

import (
	"fmt"
	"gopkg.in/mgo.v2"
)



func main() {
	session, err := mgo.Dial("")

	fmt.Println(session, err)
}

编辑好 mian.go 后,在项目目录中运行


export GO111MODULE=on
export GOPROXY=https://goproxy.cn
go mod tidy

tidy 命令返回:
go: finding gopkg.in/mgo.v2 latest
go: finding gopkg.in/check.v1 latest

go.mod 与 go.sum 文件内容

###go.mod 内容###
module connectToMongo

go 1.12

require (
	github.com/kr/pretty v0.1.0 // indirect
	gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
	gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce
	gopkg.in/yaml.v2 v2.2.2 // indirect
)

###go.sum 内容###
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce h1:xcEWjVhvbDy+nHP67nPDDpbYrY+ILlfndk4bRioVHaU=
gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

返回 IDE 仍然无法使用 mgo 这个包... 详见问题中的截图

9820 次点击
所在节点    Go 编程语言
27 条回复
reus
2019-07-12 16:09:54 +08:00
很明显是 IDE 的问题,go 命令完全没有问题。
别用这个垃圾的“ IDE ”了,vscode 不好用吗。
reus
2019-07-12 16:10:05 +08:00
@pifuant 早就不用了
reus
2019-07-12 16:10:52 +08:00
@tcpdump 奇葩也是 goland 奇葩,不关 go 的事,go 命令跑得好好的,依赖也全都下载了
janxin
2019-07-12 17:17:24 +08:00
GoLand 的问题,默认不开启,会问你开不开,你要是不点开就只能手工开了
kzzhr
2019-07-12 20:58:06 +08:00
提个方法上的建议

初试 gomod,应该优先使用命令行来跑,减少 IDE 的影响。
IDE 用出了问题,也可以换用命令行或其他 IDE,用来排查哪块出了问题。

其它问题类似
nanjishidu
2019-07-15 15:29:44 +08:00
@victrec 用了这个也不是很好用 我是每个项目单独一个 GOPATH 不知道这样设置是不是有问题。导致我的提示不能用,自动格式化也不能用。
layxy
2019-07-23 09:01:52 +08:00
使用 go mod 项目想放哪里就放哪里,使用 goland 启用项目 go mod 就可以了,然后设置下代理,导包很简单,直接快捷键同步包速度很快很方便

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

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

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

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

© 2021 V2EX