猿问

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

根据我可以阅读的最新材料,以及基于某些 API(例如Go Datastore API)的文档,我应该使用google.golang.org/appengineetc. 而不是旧appengine/...路径。但是,当我尝试使用 gcloud preview app deploy 进行部署时,出现以下错误:


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


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,但它在部署服务器的GOROOT.


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


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


2016/01/14 14:27:04 go-app-builder: build timing: 18×6g (1.819s total), 0×6l (0 total)

2016/01/14 14:27:04 go-app-builder: failed running 6g: exit status 1


github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go:27: can't find import: "github.com/golang/protobuf/protoc-gen-go/testdata/multi"

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


元芳怎么了
浏览 197回答 3
3回答

胡说叔叔

您需要执行 ago get golang.org/x/net/context将该包保存在您的 go src 目录中。但是,在使用 App Engine 时,这不是必需的。这些库可以导入和使用,但它们主要集中在 App Engine 之外运行的应用程序,即容器引擎或计算引擎。它们本质上与 Google 为这些服务准备的 RESTful API 挂钩。如果您决定直接使用 Google Cloud Storage,您将需要这些库,因为 App Engine 期望您改用 Blobstore。希望这可以帮助。

皈依舞

如果您使用的是 gosdk,只需goapp get在与.go文件相同的目录中运行,它就会下载依赖项并将其安装到您的 gosdk 安装中。然后再次部署该应用程序,它应该可以毫无问题地编译。当它工作时没有提示,文件将被下载到 gosdk\gopath\src完成后会有一条警告信息,可以忽略:go install: GOPATH 之外的目录 C:\your_current_directory 没有安装位置有关更多详细信息,请参阅:go help gopath

慕森王

作为记录,此问题现已通过gcloud 版本 142修复。现在应该可以使用gcloud beta app deploy --project <project> app.yaml.&nbsp;使用gcloud components update命令行升级。这是一个可以看到它工作的示例项目:https&nbsp;:&nbsp;//github.com/aubm/my-test-app和 Travis 构建日志:https&nbsp;:&nbsp;//travis-ci.org/aubm/my-test-app/builds/198057096
随时随地看视频慕课网APP

相关分类

Go
我要回答