使用本地包的部署构建失败 "import path does not begin with hostname"
Deployment Build Using Local Package Fails with "import path does not begin with hostname"
我是 Go 的新手,我想这对于过去使用过 Go 部署的任何人来说都是显而易见的情况。在最 TL;DR 的意义上,我使用 Go (https://scotch.io/tutorials/create-a-single-page-app-with-go-echo-and-vue) 从 Scotch.IO 为一个简单的待办事项列表构建了一个演示项目,它在我的机器上运行完美,但它在 CircleCI 中中断时尝试导入本地定义的包:
import (
"database/sql"
"net/http"
"strconv"
"go-todo/models" // <- This
"github.com/labstack/echo"
)
我知道没有真正的理由部署这样的应用程序,但我想在深入到部署必不可少的大型项目之前更好地了解它。断点处的日志显示为:
package go-todo/handlers: unrecognized import path "go-todo/handlers" (import path does not begin with hostname)
package go-todo/models: unrecognized import path "go-todo/models" (import path does not begin with hostname)
虽然我知道从远程环境的角度来看路径是不完整的,但我也知道相对路径无法修复它,我不得不假设有一些环境变量是我的无知让我无视了这个语境。
还值得注意的是,所有 go get
对远程包的调用都按预期正常运行。
任何帮助将不胜感激。优化我的 google 搜索只会带回一堆看似无关的问题。
您需要在 $GOPATH
(外部库)或 $GOROOT
(标准库)
中包含所有导入的库
go get
命令可以从远程获取库并将它们放入您的 $GOPATH
因此,如果您 go get github.com/labstack/echo
它会从 URL 获取库并将其放置在 $GOPATH/github.com/labstack/echo
本地。
不可能像这样远程获取库 go-todo/models
,因此您需要在 CI 中确保它已被复制并在 [=17= 本地可用].
或者您可以尝试 vendoring。
我是 Go 的新手,我想这对于过去使用过 Go 部署的任何人来说都是显而易见的情况。在最 TL;DR 的意义上,我使用 Go (https://scotch.io/tutorials/create-a-single-page-app-with-go-echo-and-vue) 从 Scotch.IO 为一个简单的待办事项列表构建了一个演示项目,它在我的机器上运行完美,但它在 CircleCI 中中断时尝试导入本地定义的包:
import (
"database/sql"
"net/http"
"strconv"
"go-todo/models" // <- This
"github.com/labstack/echo"
)
我知道没有真正的理由部署这样的应用程序,但我想在深入到部署必不可少的大型项目之前更好地了解它。断点处的日志显示为:
package go-todo/handlers: unrecognized import path "go-todo/handlers" (import path does not begin with hostname)
package go-todo/models: unrecognized import path "go-todo/models" (import path does not begin with hostname)
虽然我知道从远程环境的角度来看路径是不完整的,但我也知道相对路径无法修复它,我不得不假设有一些环境变量是我的无知让我无视了这个语境。
还值得注意的是,所有 go get
对远程包的调用都按预期正常运行。
任何帮助将不胜感激。优化我的 google 搜索只会带回一堆看似无关的问题。
您需要在 $GOPATH
(外部库)或 $GOROOT
(标准库)
go get
命令可以从远程获取库并将它们放入您的 $GOPATH
因此,如果您 go get github.com/labstack/echo
它会从 URL 获取库并将其放置在 $GOPATH/github.com/labstack/echo
本地。
不可能像这样远程获取库 go-todo/models
,因此您需要在 CI 中确保它已被复制并在 [=17= 本地可用].
或者您可以尝试 vendoring。