cannot find main module 解决办法
生活随笔
收集整理的這篇文章主要介紹了
cannot find main module 解决办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
做6.824 實驗的過程中想要跑測試,發現go test -run 2A時 出現cannot find main module問題,測試跑不起來。
原因
這個原因是從GO1.11 版本開始引入了go.mod文件來對項目中的go源碼的編譯相關的內容進行管理,經常使用GO的同學可能深受go get或者GOPATH的配置之苦,這個時候引入了go.mod文件,就能將這一些配置釋放出來,只需要將項目需要的依賴以及項目的路徑放在go.mod中,交給GO本身來做即可。
這個時候一些老的GO項目本身沒有配置go.mod文件(比如mit6.824 lab 的源代碼沒有配置),所以編譯的時候會出現這樣的問題。
解決
-
如果不會配置
go.mod文件,且項目中不需要太多的配置,只想編譯運行,可以直接關閉GO編譯對這個文件的依賴,通過設置GO環境變量GO111MODULE為off即可,export GO111MODULE=off。 -
如果想要試用這個文件的功能,可以參考
etcd的go.mod形態。module go.etcd.io/etcd/v3 /*指定根目錄*/go 1.16replace ( /*取代當前項目中的依賴包,即用左邊的包取代右邊的包*/go.etcd.io/etcd/api/v3 => ./apigo.etcd.io/etcd/client/pkg/v3 => ./client/pkggo.etcd.io/etcd/client/v2 => ./client/v2go.etcd.io/etcd/client/v3 => ./client/v3go.etcd.io/etcd/etcdctl/v3 => ./etcdctlgo.etcd.io/etcd/pkg/v3 => ./pkggo.etcd.io/etcd/raft/v3 => ./raftgo.etcd.io/etcd/server/v3 => ./servergo.etcd.io/etcd/tests/v3 => ./tests )require ( /*依賴的代碼包及其版本*/github.com/bgentry/speakeasy v0.1.0github.com/dustin/go-humanize v1.0.0github.com/mattn/go-runewidth v0.0.9 // indirectgithub.com/spf13/cobra v1.1.1go.etcd.io/bbolt v1.3.6-0.20210426205525-9c92be978ae0go.etcd.io/etcd/api/v3 v3.5.0-alpha.0go.etcd.io/etcd/client/pkg/v3 v3.5.0-alpha.0go.etcd.io/etcd/client/v2 v2.305.0-alpha.0go.etcd.io/etcd/client/v3 v3.5.0-alpha.0go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0go.etcd.io/etcd/server/v3 v3.5.0-alpha.0go.etcd.io/etcd/tests/v3 v3.5.0-alpha.0go.uber.org/zap v1.16.1-0.20210329175301-c23abee72d19golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3bagoogle.golang.org/grpc v1.36.1gopkg.in/cheggaaa/pb.v1 v1.0.28 )
總結
以上是生活随笔為你收集整理的cannot find main module 解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: blktrace 工具集使用 及其实现原
- 下一篇: 求一个简短唯美个性签名!