从我可以阅读的最新资料,以及基于某些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
我是否误解了文档并且只应该使用旧包?
答案 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
升级命令行。