我正在尝试使用deploy命令部署到google cloud,我的代码使用github url引用本地包。使用gcloud deploy命令进行部署时,我无法理解。所以在这个例子中。我的终结点软件包使用完整的git url引用本地软件包的价格。我在这里想念什么?
package endpoints
import (
"encoding/json"
"fmt"
"github.com/piscean/pricing/price"
"net/http"
)
func LawnPricing(w http.ResponseWriter, r *http.Request) {
m, err := price.Pricing()
c, err := json.Marshal(m)
w.Write(c)
r.Body.Close()
}
错误:(gcloud.functions.deploy)OperationError:代码= 3,消息=构建失败:/tmp/sgb/gopath/src/serverlessapp/vendor/endpoints/pricing.go:6:2:找不到软件包“ github.com/piscean/pricing/price”中的任何一个: /tmp/sgb/gopath/src/serverlessapp/vendor/github.com/piscean/pricing/price(供应商树) /go/src/github.com/piscean/pricing/price(来自$ GOROOT) /tmp/sgb/gopath/src/github.com/piscean/pricing/price(来自$ GOPATH) /tmp/sgb/gopath/src/serverlessapp/vendor/endpoints/zipcode.go:5:2:在以下任意位置均找不到软件包“ github.com/piscean/pricing/zip”: /tmp/sgb/gopath/src/serverlessapp/vendor/github.com/piscean/pricing/zip(供应商树) /go/src/github.com/piscean/pricing/zip(来自$ GOROOT) /tmp/sgb/gopath/src/github.com/piscean/pricing/zip(来自$ GOPATH)
答案 0 :(得分:2)
为此,您应该使用依赖性软件包管理工具称为 dep 。
使用以下命令安装dep:
go get -u github.com/golang/dep/cmd/dep
这将在 GOBIN 目录中创建dep的二进制文件。导航到主软件包所在的目录并执行以下命令:
对于Windows:
%GOBIN%\dep.exe init
对于Linux:
$GOBIN\dep init
这将创建 Gopkg.toml 和 Gopkg.lock 文件以及供应商文件夹,以解决您的问题。
答案 1 :(得分:1)
云函数是谷歌在函数部署过程中为我们提供的托管环境。在设置环境时,google 提供了所有系统依赖项,但任何外部依赖项都应由函数本身处理。
在解析外部依赖时,它会查找供应商目录、GOROOT 和 GOPATH 以查找要导入的包。如果在这些位置中的任何一个都找不到包,则会出现此错误。
解决方案
参考 - https://github.com/GoogleCloudPlatform/golang-samples/issues/1600