【问题标题】:Problems importing packages on Circle Ci Golang在 Circle Ci Golang 上导入包的问题
【发布时间】:2018-01-04 09:58:01
【问题描述】:

我正在使用 Circle CI 来测试我的项目。该项目是一个简单的 Go 应用程序,由几个包和一个 main.go 文件组成。在我的项目中引用包时,我只需在代码中将它们作为“projectName/packageName”导入。这在本地可以正常工作,但是,当我推送到 git 并在 Circle CI 上构建时,我收到以下错误。

package crypto-compare-go/handlers: 无法识别的导入路径 “crypto-compare-go/handlers”(导入路径不以 主机名)

我通过将 github.com/myGitUsername/projectName 附加到我的本地包导入来解决此问题,这意味着当我在本地开发时如果我更改项目中的一个包,我必须推送到 git,然后拉即使它们都在同一个父项目文件夹下,也能够使用它们。这似乎是一个缓慢、非常低效的过程。

以前有人在使用 Circle CI 时遇到过这个问题吗?

【问题讨论】:

  • 您的依赖项必须是可解析的。这意味着go get 必须工作,或者您可以使用供应商。真的没有第三种选择。
  • Go get 在本地对我来说工作正常,我原以为这些包都在同一个项目中,它会很好地解决它们。
  • 我不确定你的意思是“在同一个项目中”。 go get 没有“项目”的概念。当您尝试获取这些包时,您会遇到什么错误?
  • 你的本地文件系统应该匹配正确的 Go 导入路径。在本地正确设置它,您将能够在 CircleCI 和任何其他环境中执行相同的操作。

标签: go continuous-integration circleci circleci-2.0


【解决方案1】:

我通过将 github.com/myGitUsername/projectName 附加到我的本地包导入来解决此问题,这意味着当我在本地开发时如果我更改项目中的一个包,我必须推送到 git,然后拉即使它们都在同一个父项目文件夹下,也能够使用它们。这似乎是一个缓慢、非常低效的过程。

不。你搞错了。你的 go 将使用本地的 $GOPATH/src/github.com/myGitUsername/projectName 目录进行编译。只有运行 go get -u <package path> 才能访问 github.com。它记录在How to Write Go Code

请注意,您不需要将代码发布到远程存储库 在你建造它之前。组织代码只是一个好习惯 好像有一天你会发布它。在实践中,您可以选择任何 任意路径名,只要它对标准库是唯一的 和更大的 Go 生态系统。

【讨论】:

    猜你喜欢
    • 2013-03-02
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 2017-12-06
    相关资源
    最近更新 更多