Go 云功能和本地依赖性
我正在尝试使用deploy命令部署到googlecloud,我的代码引用了使用githuburl的本地包。当使用gcloud deploy命令部署时,我会看到下面的内容。所以在这个例子中。My endpoints package是指使用完整git url的本地包价格。我错过了什么Go 云功能和本地依赖性,go,google-cloud-platform,google-cloud-functions,Go,Google Cloud Platform,Google Cloud Functions,我正在尝试使用deploy命令部署到googlecloud,我的代码引用了使用githuburl的本地包。当使用gcloud deploy命令部署时,我会看到下面的内容。所以在这个例子中。My endpoints package是指使用完整git url的本地包价格。我错过了什么 package endpoints import ( "encoding/json" "fmt" "github.com/piscean/pricing/price" "net/htt
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)operation错误:code=3,message=Build failed:/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)
对此,您应该使用名为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文件以及解决您的问题的供应商文件夹
参考:云功能是一个托管环境,谷歌在部署该功能期间为我们提供了该环境。在设置环境时,google提供所有系统依赖项,但任何外部依赖项都应由函数本身处理 在解析外部依赖关系时,它会查找供应商目录、GOROOT和GOPATH,以查找要导入的包。如果在这些位置中的任何一个都找不到包,则会出现此错误 解决方案
- 通过在此处手动复制包,将其作为供应商依赖项提供
- 或者在部署云功能时为您的软件包创建go模块并提供go.mod文件。这种方式在构建函数之前知道在哪里找到包
参考-供应商(放入
供应商
文件夹)您的依赖项。像dep
这样的收费和模块支持这一点。正如有人已经回答的那样,您需要像deb
这样的依赖关系管理工具,它将为您设置这些依赖关系。我正在使用VGO和GOMODULES111=ON。它确实创建了供应商文件夹。我在供应商文件夹中看到了所有依赖项,但没有看到内部包的依赖项。