背景
我覆蓋升級安裝了go的較新的版本。
現象
更新后,運行程序就報這個錯
no required module provides package xxx: go.mod file not found in current directory or any parent directory; see 'go help modules'
解決
網上找的命令:
go env -w GO111MODULE=auto
解釋一下命令:
GO111MODULE是 go modules 功能的開關,關於go modules本文不詳述,這個涉及到go的一種很重要的管理機制,我們可以簡單的理解為,在沒有go modules機制時,go工程中對於第三方功能包的管理非常復雜,也非常專業,這就導致程序員在進行開發的時候,對於第三方功能包的管理很不方便,所以才有了go modules機制。這個機制的開關是通過GO111MODULE環境變量來配置的。
GO111MODULE=off,無模塊支持,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。
GO111MODULE=on,模塊支持,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。
GO111MODULE=auto,默認值,go命令行將會根據當前目錄來決定是否啟用module功能。這種情況下可以分為兩種情形:
(1)當前目錄在GOPATH/src之外且該目錄包含go.mod文件,開啟模塊支持。
(2)當前文件在包含go.mod文件的目錄下面。