Go 1.12模块:非本地导入中的本地导入

我目前正在使用 Go 1.12 模块,并且对导入感到非常厌倦。

我正在使用 gin(网络微服务)和 gorm(golang orm)制作rest-api。在 golang 模块中工作时一切仍然正常。但在导入本地包时遇到麻烦

目录树:

http://img4.mukewang.com/64993ff80001295602580246.jpg

go.mod:


module github.com/Aragami1408/go-gorm


go 1.12


require (

    github.com/gin-gonic/gin v1.4.0

    github.com/jinzhu/gorm v1.9.9

    github.com/lib/pq v1.1.1

    github.com/satori/go.uuid v1.2.0

)


db.go:


package db


//code below...

任务.go:


package task


import (

    "../db"

)

但是当我运行时仍然出现此错误:


local import "../db" in non-local package


我在谷歌上搜索了很多,但没有任何帮助


红糖糍粑
浏览 113回答 3
3回答

桃花长相依

来自“模块是否可以与相对导入一起使用,例如导入“./subdir”? ”在模块中,最终有一个子目录的名称。如果父目录显示“ module m”,则子目录将导入为“ m/subdir”,而不是“ ./subdir”。在你的情况下:import "github.com/Aragami1408/go-gorm/db". # or maybe import "go-gorm/db"

胡说叔叔

如果您使用 go 模块,您可以使用以下命令将您的包替换为本地包:go mod edit -replace github.com/username/project=/localpath然后就打电话go get github.com/username/project一切都应该正常。

吃鸡游戏

当迁移到“包管理器”时,您可以go mod使用以下命令创建文件:go mod init myhost/myrepo/mymodule然后将创建文件go.mod:module myhost/myrepo/mymodulego 1.15现在您可以利用此文件列出对其他模块的依赖项:# i.e: your module mymodule depends on github.com/gorilla/muxgo get github.com/gorilla/mux你运行它吗?然后再次检查内容go.modmodule myhost/myrepo/mymodulego 1.15require (    github.com/gorilla/mux v1.7.4)您很高兴,因为您利用了包管理器功能并且像老板一样管理依赖项。然而,...但是,您忘记了需要维护所有导入具有相对路径的目录的 go 文件。例子 :如果你有main.gopackage mainimport (    "fmt"    "./router" // !! RELATIVE PATH)您还必须通过将相对路径替换为 来进行迁移[module-name]/relative-path。在这种情况下,它必须变成:package mainimport (    "fmt"    "myhost/myrepo/mymodule/router" // !! 💼 No more RELATIVE PATH)
打开App,查看更多内容
随时随地看视频慕课网APP