Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 云功能和本地依赖性_Go_Google Cloud Platform_Google Cloud Functions - Fatal编程技术网

Go 云功能和本地依赖性

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

我正在尝试使用deploy命令部署到googlecloud,我的代码引用了使用githuburl的本地包。当使用gcloud deploy命令部署时,我会看到下面的内容。所以在这个例子中。My endpoints package是指使用完整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)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.tomlGopkg.lock文件以及解决您的问题的供应商文件夹


参考

云功能是一个托管环境,谷歌在部署该功能期间为我们提供了该环境。在设置环境时,google提供所有系统依赖项,但任何外部依赖项都应由函数本身处理

在解析外部依赖关系时,它会查找供应商目录、GOROOT和GOPATH,以查找要导入的包。如果在这些位置中的任何一个都找不到包,则会出现此错误

解决方案

  • 通过在此处手动复制包,将其作为供应商依赖项提供
  • 或者在部署云功能时为您的软件包创建go模块并提供go.mod文件。这种方式在构建函数之前知道在哪里找到包

参考-

供应商(放入
供应商
文件夹)您的依赖项。像
dep
这样的收费和模块支持这一点。正如有人已经回答的那样,您需要像
deb
这样的依赖关系管理工具,它将为您设置这些依赖关系。我正在使用VGO和GOMODULES111=ON。它确实创建了供应商文件夹。我在供应商文件夹中看到了所有依赖项,但没有看到内部包的依赖项。