【问题标题】:go.mod unresolved dependencygo.mod 未解决的依赖
【发布时间】:2021-12-10 17:50:48
【问题描述】:

我正在使用 1.14.2 版本的 go。我正在尝试将我的项目添加到 go.mod 以使用 go mod init <dependecyname> 部署 heroku。之后我尝试使用go run main.go 命令运行我的项目,但收到以下错误:

go: finding module for package github.com/googollee/go-socket.io
go: finding module for package github.com/dgrijalva/jwt-go
go: finding module for package github.com/gorilla/mux
go: found github.com/dgrijalva/jwt-go in github.com/dgrijalva/jwt-go v3.2.0+incompatible
go: found github.com/googollee/go-socket.io in github.com/googollee/go-socket.io v1.4.4
go: found github.com/gorilla/mux in github.com/gorilla/mux v1.8.0
controllers/userController.go:10:2: cannot find package
models/avatar.go:3:8: cannot find package
models/base.go:6:1: cannot find package
models/base.go:7:1: cannot find package
models/user.go:8:2: cannot find package
controllers/userController.go:11:2: cannot find package
controllers/userController.go:12:2: cannot find package
controllers/userController.go:13:2: cannot find package

当我调查我的go.mod 文件时,我意识到require 块中存在未解决的依赖错误:

module <modulename>

go 1.14

require (
    github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
    github.com/googollee/go-socket.io v1.4.4 // indirect
    github.com/gorilla/mux v1.8.0 // indirect
)

如何解决?

【问题讨论】:

  • 1.您的模块必须(此处不争论)一个正确的模块名称。使用你喜欢的任何东西,但&lt;modulename&gt; 无效。如果您不确定要使用什么,请使用“example.org/experiment”。 2.您必须(这里不再争论)通过正确的(阅读:完整)导入路径导入模块中的包:例如“example.org/experiment/models”,或者您如何命名它们。 3. 阅读如何编写 Go 代码并坚持下去。 4.go mod init必须用模块名来调用,而不是一些依赖。 5. 切勿将go run 与文件名参数一起使用。
  • 我假设作者使用占位符来表示模块名称和依赖项,而不是上面的值。
  • @Ali Gurelli 你能解决这个问题吗?
  • @sgauri 是的,但我不记得如何

标签: go heroku


【解决方案1】:

我遇到了类似的问题,我可以通过启用 go 模块集成来解决。你可以通过 Preferences > GO > GO Modules 来做到这一点。

【讨论】:

  • 除了那个答案,你应该确保安装的golang版本与go.mod中指定的go版本相同
  • 天哪!!!你节省了我的时间。刚刚切换到新项目,无法理解为什么一切都没有解决。谢谢
  • 这样一个简单的修复,但这样一个节省时间。谢谢!
【解决方案2】:

我可以通过关闭和开启模块集成来解决这个问题。 GOLANG 首选项 > GO > GO 模块。

【讨论】:

    【解决方案3】:

    go init 命令通过将新的go.mod 文件添加到您指定的模块名称到您的根文件夹来初始化当前项目的 go 模块。 要将新的依赖项添加到您的项目中,请使用 go get &lt;path&gt;,然后,它应该列在 go.mod 文件中。

    【讨论】:

    • 它在 go.mod 文件中列出,但正如我在问题中提到的那样,它无法解决依赖关系。它给了我未解决的依赖错误。而且我试图运行我的项目然后我给出找不到包错误。当我删除好文件时,一切运行良好,但无法部署 heroku
    • 在您的go.mod 中仅列出了indirect 依赖项,这意味着它们是在您构建模块时自动添加的,这与您使用显式go get 获得的内容略有不同。在这一点上,很难说您删除了哪些“好”文件以及 Heroku 部署说了什么,所以我会按照 @Volker 的建议将您推荐给 How to Write Go Code
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 2017-05-20
    • 2017-10-29
    • 2014-12-17
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多