为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
红糖糍粑 2023-06-26 15:36:00
我目前正在使用 Go 1.12 模块,并且对导入感到非常厌倦。我正在使用 gin(网络微服务)和 gorm(golang orm)制作rest-api。在 golang 模块中工作时一切仍然正常。但在导入本地包时遇到麻烦目录树:go.mod:module github.com/Aragami1408/go-gormgo 1.12require (    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 taskimport (    "../db")但是当我运行时仍然出现此错误:local import "../db" in non-local package我在谷歌上搜索了很多,但没有任何帮助
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

来自“模块是否可以与相对导入一起使用,例如导入“./subdir”? ”

在模块中,最终有一个子目录的名称。

如果父目录显示“ module m”,则子目录将导入为“ m/subdir”,而不是“ ./subdir”。

在你的情况下:

import "github.com/Aragami1408/go-gorm/db".
# or maybe
import "go-gorm/db"
查看完整回答
反对 回复 2023-06-26
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

如果您使用 go 模块,您可以使用以下命令将您的包替换为本地包:

go mod edit -replace github.com/username/project=/localpath

然后就打电话

go get github.com/username/project

一切都应该正常。


查看完整回答
反对 回复 2023-06-26
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

当迁移到“包管理器”时,您可以go mod使用以下命令创建文件:


go mod init myhost/myrepo/mymodule

然后将创建文件go.mod:


module myhost/myrepo/mymodule


go 1.15

现在您可以利用此文件列出对其他模块的依赖项:


# i.e: your module mymodule depends on github.com/gorilla/mux

go get github.com/gorilla/mux

你运行它吗?然后再次检查内容go.mod


module myhost/myrepo/mymodule


go 1.15


require (

    github.com/gorilla/mux v1.7.4

)


您很高兴,因为您利用了包管理器功能并且像老板一样管理依赖项。

然而,...

但是,您忘记了需要维护所有导入具有相对路径的目录的 go 文件。


例子 :


如果你有main.go


package main


import (

    "fmt"


    "./router" // !! RELATIVE PATH

)


您还必须通过将相对路径替换为 来进行迁移[module-name]/relative-path。在这种情况下,它必须变成:


package main


import (

    "fmt"


    "myhost/myrepo/mymodule/router" // !! 💼 No more RELATIVE PATH

)


查看完整回答
反对 回复 2023-06-26
  • 3 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信