我就想試試github.com/gin-gonic/gin,為什么死活都run不起來(lái)

準(zhǔn)備學(xué)習(xí)go語(yǔ)言枣察,打算用go的gin框架來(lái)寫(xiě)寫(xiě)web接口争占。然而用文檔的教程來(lái)運(yùn)行,卻死活都跑不起來(lái)序目,寫(xiě)下問(wèn)題和解決方法臂痕,讓遇到問(wèn)題的同伴早日脫離苦海

首先簡(jiǎn)單的說(shuō)下正常要運(yùn)行一個(gè)項(xiàng)目步驟,我是windows環(huán)境:

?安裝golang

1. 下載安裝包安裝

2. 在cmd中輸入go回車猿涨,有輸出則說(shuō)明安裝正常

3. 一般安裝的時(shí)候程序會(huì)自動(dòng)添加握童,無(wú)需人工干預(yù)

檢查GOPATH

1. 可以在cmd中查看set GOPATH

2. 或者在"我的電腦"-"屬性"-"高級(jí)"-"環(huán)境變量"中查看和添加

3. 正常go安裝,會(huì)自動(dòng)添加叛赚,我本機(jī)GOPATH=C:\Users\Administrator\go澡绩;

安裝gin

1. 接下來(lái)安裝gin,框架文檔介紹:go get -u github.com/gin-gonic/gin

2. 這時(shí)候開(kāi)始遇到問(wèn)題了俺附,常遇問(wèn)題資源加載不了肥卡,解決方法是使用代理(這塊有個(gè) go env 的命令,可以查看當(dāng)前配置)昙读,在cmd中運(yùn)行:

? go env -w GO111MODULE=on

? ?go env -w GOPROXY=https://goproxy.io,direct

3. 設(shè)置后召调,重新運(yùn)行: go get -u github.com/gin-gonic/gin,可以很快速的安裝

運(yùn)行項(xiàng)目?

1. 在C:\Users\Administrator\go\ 下創(chuàng)建 src/gin/ 文件夾,創(chuàng)建main.go 文件唠叛,添加文檔說(shuō)的代碼

package main

import "github.com/gin-goinc/gin"

func main() {

? ? ? ? r := gin.Default()

? ? ? ? r.GET("/ping", func(c *gin.Context) {

? ? ? ? ? ? ? ? ? c.JSON(200, gin.H{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"message": "pong",

? ? ? ? ? ? ? ? ? })

? ? ? ? ?})

? ? ? ? r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")

}

2. 在cmd中只嚣,進(jìn)入C:\Users\Administrator\go\src\gin\目錄,運(yùn)行命令:? go run .\main.go

3. 這時(shí)候問(wèn)題又來(lái)了艺沼,報(bào)錯(cuò):main.go:3:8: cannot find module providing package github.com/gin-gonic/gin: working directory is not part of a module

4. 解決方法册舞,當(dāng)前目錄分別運(yùn)行下面兩句代碼:

? go mod init gin

? go mod edit -require github.com/gin-gonic/gin@latest

5. 上面運(yùn)行后,再運(yùn)行 ?go run .\main.go障般,就可行了调鲸。這其中涉及到go mod包依賴管理 ,類似前端npm的package.json挽荡,有興趣可以深入了解

問(wèn)題回顧

上面幾點(diǎn)只是說(shuō)明解決方法藐石,這其中遇到的問(wèn)題,甚至一度懷疑我安裝的版本有問(wèn)題

1. 我使用的是go 1.14.2定拟,在運(yùn)行g(shù)in的時(shí)候 go run .\main.go 于微,會(huì)報(bào)錯(cuò): main.go:3:8: cannot find module providing package github.com/gin-gonic/gin: working directory is not part of a module

2. 此時(shí)經(jīng)過(guò)幾次調(diào)試,發(fā)現(xiàn)如果運(yùn)行?go env -w GO111MODULE=off(關(guān)閉模塊管理)報(bào)錯(cuò)變成

main.go:3:8: cannot find package "github.com/gin-gonic/gin" in any of: c:\go\src\github.com\gin-gonic\gin (from $GOROOT) C:\Users\Administrator\go\src\github.com\gin-gonic\gin (from $GOPATH)

3. 這時(shí)?cannot find package "" in any of 這個(gè)報(bào)錯(cuò)青自,就把我引到到設(shè)置GOPATH問(wèn)題集合上株依,調(diào)試很久,發(fā)現(xiàn)并不能解決

4. 此時(shí)我懷疑起了代理設(shè)置延窜,特別是go get 之后包是放在 ?$GOPATH\src\pkg下的恋腕,教程說(shuō)是在src下面的,這點(diǎn)很是詭異逆瑞, 當(dāng) go env -w GO111MODULE=off?(關(guān)閉模塊管理)荠藤,這個(gè)時(shí)候go get 命令是不走代理,而是走實(shí)際地址获高,下載速度異常慢商源,經(jīng)常下載失敗,但是模塊包能被下載到 $GOPATH/src目錄下谋减,這點(diǎn)和網(wǎng)上說(shuō)的go目錄結(jié)構(gòu)一致牡彻,此時(shí)在main.go中 import 包,運(yùn)行也不會(huì)報(bào)錯(cuò)( gin的包比較大出爹,正常是下載失敗的庄吼,我當(dāng)時(shí)用go get github.com/astaxie/beedb試了另一個(gè)包)

5. gin用go get 下載是不會(huì)成功的,我直接在github下載包放在 $GOPATH/src 下严就,但是缺少依賴总寻,無(wú)法運(yùn)行,后續(xù)又把?$GOPATH\src\pkg\mod中的包復(fù)制到 $GOPATH\src梢为,還是不能運(yùn)行渐行。

6. 最后發(fā)現(xiàn)gin中有個(gè)go.mod的文件轰坊,查閱了相關(guān)資料,才找到解決方法祟印。

總結(jié)

? ? ?在使用 GOPROXY 的時(shí)候肴沫,開(kāi)啟了 GO111MODULE,導(dǎo)致包管理非官方所說(shuō)的在? $GOPATH\src\蕴忆,而是去了 $GOPATH\src\pkg\目錄下颤芬,此時(shí)就需要用go mod引入這些包 require github.com/gin-gonic/gin@latest ,解決import獲取不了包的問(wèn)題套鹅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末站蝠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卓鹿,更是在濱河造成了極大的恐慌菱魔,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吟孙,死亡現(xiàn)場(chǎng)離奇詭異豌习,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拔疚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)既荚,“玉大人稚失,你說(shuō)我怎么就攤上這事∏∑福” “怎么了句各?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)晴叨。 經(jīng)常有香客問(wèn)我凿宾,道長(zhǎng),這世上最難降的妖魔是什么兼蕊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任初厚,我火速辦了婚禮,結(jié)果婚禮上孙技,老公的妹妹穿的比我還像新娘产禾。我一直安慰自己,他們只是感情好牵啦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布亚情。 她就那樣靜靜地躺著,像睡著了一般哈雏。 火紅的嫁衣襯著肌膚如雪楞件。 梳的紋絲不亂的頭發(fā)上衫生,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音土浸,去河邊找鬼罪针。 笑死,一個(gè)胖子當(dāng)著我的面吹牛栅迄,可吹牛的內(nèi)容都是我干的站故。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼毅舆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼西篓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起憋活,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤岂津,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后悦即,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吮成,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年辜梳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粱甫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡作瞄,死狀恐怖茶宵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宗挥,我是刑警寧澤乌庶,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站契耿,受9級(jí)特大地震影響瞒大,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搪桂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一透敌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧踢械,春花似錦拙泽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至德绿,卻和暖如春荷荤,著一層夾襖步出監(jiān)牢的瞬間退渗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蕴纳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留会油,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓古毛,卻偏偏與公主長(zhǎng)得像翻翩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稻薇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355