我无法使用google.golang.org/appengine模块将Go模块部署到App Engine

时间:2016-01-15 01:36:26

标签: google-app-engine go google-cloud-platform google-cloud-datastore

从我可以阅读的最新资料,以及基于某些API的文档(例如,the Go Datastore API),我应该使用google.golang.org/appengine等而不是旧的{{1路径。但是,当我尝试使用gcloud预览应用程序部署进行部署时,出现以下错误:

  

部署包含无法编译的文件:编译失败:

appengine/...

2016/01/14 14:32:43 go-app-builder: build timing: 2×6g (113ms total), 0×6l (0 total) 2016/01/14 14:32:43 go-app-builder: failed running 6g: exit status 1 server/alexa.go:10: can't find import: "golang.org/x/net/context" 软件包应该替换旧的golang.org/x/net/context软件包,但它似乎在部署服务器的appengine/context中不可用。

我尝试在我的包repo中包含所有依赖项及其依赖项,但这只会导致我这个模糊的错误(它抱怨的目录实际存在):

  

部署包含无法编译的文件:编译失败:

GOROOT

我是否误解了文档并且只应该使用旧包?

3 个答案:

答案 0 :(得分:2)

您需要执行go get golang.org/x/net/context将该包保存在go src目录中。但是,在使用App Engine时,没有必要。这些库可以导入和使用,但它们主要集中在App Engine外部运行的应用程序,即Container Engine或Compute Engine。它们基本上是为谷歌为这些服务编写的RESTful API。如果您决定直接使用Google云端存储,那么您需要这些库,因为App Engine希望您使用Blobstore。希望这会有所帮助。

答案 1 :(得分:1)

如果您使用的是gosdk,只需在与.go文件相同的目录中运行goapp get,它就会下载并安装依赖项到您的gosdk安装。然后再次部署应用程序,它应该没有问题编译。

当它工作时没有提示,文件将被下载到gosdk \ gopath \ src

完成后会有一条警告信息可以忽略:

  

go install:目录没有安装位置   GOPATH之外的C:\ your_current_directory           有关详细信息,请参阅:go help gopath

答案 2 :(得分:0)

根据记录,此问题现已通过 gcloud版本142 修复。 现在应该可以使用gcloud beta app deploy --project <project> app.yaml进行部署。使用gcloud components update升级命令行。