各位大佬好,想学习 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=
1 pifuant 2019-07-12 14:16:39 +08:00 把你项目放到 gopath 里 |
![]() | 3 myyou 2019-07-12 14:28:17 +08:00 ![]() 你 ide go 库路径配置的不对,所以 ide 无法代码提示,但是你直接用命令 go build 肯定是能编译的 |
5 mosfet 2019-07-12 14:32:48 +08:00 贴个 go env 看看 |
![]() | 6 tcpdump 2019-07-12 14:33:35 +08:00 GO 奇葩的受害者之一 |
7 lixikei 2019-07-12 14:33:45 +08:00 ![]() ide goland? preferences>go>go modules(vgo) 勾选 enable go modules(vgo) integration 前提 goland 版本要大于等于 2018.3 |
8 log4j 2019-07-12 14:39:19 +08:00 ![]() golang 默认不会用 mod,你需要在配置里面开启,就可以啦 |
![]() | 9 ScepterZ 2019-07-12 14:40:34 +08:00 ![]() 是 ide 的问题 |
![]() | 10 chenset 2019-07-12 14:42:52 +08:00 ![]() ![]() 设置成这样就行了 |
11 richzhu OP 感谢各位大佬,设置 IDE 后果然好了~ 已挨个感谢~~ 诚心祝各位热心大佬终生无 Bug~ |
![]() | 12 nanjishidu 2019-07-12 14:46:47 +08:00 求教 vscode 配置 |
![]() | 13 index90 2019-07-12 14:58:00 +08:00 IDE 没配好,Go 又背锅 |
14 creedowl 2019-07-12 15:07:38 +08:00 via Android mian.go 2333 |
![]() | 17 Muninn 2019-07-12 15:40:45 +08:00 ![]() vscode 只用装个 go 插件什么都不用配 @nanjishidu |
![]() | 18 dongxiaozhuo 2019-07-12 15:56:55 +08:00 看起来是个 IDE 的配置问题,不能怪 Golang 和 go mod。你应该查一下文档,看看你的 IDE 如何支持 go mod 模式。 毕竟 go mod 模式下,依赖是放在 $GOPATH/pkg/mod 目录下的,非 go mod 模式下,go get 到的依赖是放在 $GOPATH/src 目录下的。IDE 没有配置正确,自然找不到依赖。 另外你执行 `go mod init` 的时候的报错,是因为当前项目并不在 $GOPATH/src 目录下,所以找不到默认的 module path/name,你需要执行 `go mod init $module_path/$module_name`,就可以正确执行了。 推荐先去看看官方 go mod 的文档,虽然特别的繁杂,光是一个版本号管理就能绕的云里雾里的。不过看懂之后,就知道应该如何正确使用了。 |
19 richzhu OP @dongxiaozhuo 谢谢,我没有怪 Golang 也没有怪 go mod,我学 go 是自愿的没有人强制的~ 确实是自己没有搞懂也非常想搞懂,所以才会上来问问呢,谢谢提醒啦~ 以后遇到问题会先去仔细查看文档的~ |
20 victrec 2019-07-12 16:09:35 +08:00 @nanjishidu "go.useLanguageServer": true, 用 gopls |
![]() | 21 reus 2019-07-12 16:09:54 +08:00 ![]() 很明显是 IDE 的问题,go 命令完全没有问题。 别用这个垃圾的“ IDE ”了,vscode 不好用吗。 |
![]() | 24 janxin 2019-07-12 17:17:24 +08:00 GoLand 的问题,默认不开启,会问你开不开,你要是不点开就只能手工开了 |
![]() | 25 kzzhr 2019-07-12 20:58:06 +08:00 via iPhone ![]() 提个方法上的建议 初试 gomod,应该优先使用命令行来跑,减少 IDE 的影响。 IDE 用出了问题,也可以换用命令行或其他 IDE,用来排查哪块出了问题。 其它问题类似 |
![]() | 26 nanjishidu 2019-07-15 15:29:44 +08:00 @victrec 用了这个也不是很好用 我是每个项目单独一个 GOPATH 不知道这样设置是不是有问题。导致我的提示不能用,自动格式化也不能用。 |
27 layxy 2019-07-23 09:01:52 +08:00 使用 go mod 项目想放哪里就放哪里,使用 goland 启用项目 go mod 就可以了,然后设置下代理,导包很简单,直接快捷键同步包速度很快很方便 |