gpt4 book ai didi

go - 如何使用 Go 1.12 运行本地 GAE 模拟器?

转载 作者:行者123 更新时间:2023-12-02 12:04:04 26 4
gpt4 key购买 nike

使用 Go 1.9,您可以使用“dev_appserver.py yaml”运行本地 GAE 模拟器

似乎 google-cloud-sdk/已被弃用。

Go 1.12 文档说您可以使用“go run”在本地运行模拟器 https://cloud.google.com/appengine/docs/standard/go112/testing-and-deploying-your-app

我无法运行演示应用程序:
google.golang.org/appengine/demos/helloworld

$ 运行*.go

2019/09/25 10:57:27 INFO: Serving the front page.
panic: Metadata fetch failed for 'instance/attributes/gae_project': Get http://metadata/computeMetadata/v1/instance/attributes/gae_project: dial tcp: lookup metadata: no such host

goroutine 5 [running]:
google.golang.org/appengine/internal.mustGetMetadata(0x1474a38, 0x1f, 0x0, 0x0, 0x0)
/Users/Steve/go/src/google.golang.org/appengine/internal/metadata.go:34 +0x18a
google.golang.org/appengine/internal.partitionlessAppID(0x0, 0xc0000304c0)
/Users/Steve/go/src/google.golang.org/appengine/internal/identity_vm.go:112 +0xa2
google.golang.org/appengine/internal.DefaultTicket.func1()
/Users/Steve/go/src/google.golang.org/appengine/internal/api.go:294 +0x86
sync.(*Once).Do(0x17f0150, 0x1484448)
/usr/local/go/src/sync/once.go:44 +0xb3
google.golang.org/appengine/internal.DefaultTicket(0xc0001945d0, 0x13b78e0)
/Users/Steve/go/src/google.golang.org/appengine/internal/api.go:289 +0x39
google.golang.org/appengine/internal.Call(0x14d9f00, 0xc0001945d0, 0x146a718, 0xa, 0x14666df, 0x5, 0x14d8ec0, 0xc0000304c0, 0x14d80c0, 0xc00000c1e0, ...)
/Users/Steve/go/src/google.golang.org/appengine/internal/api.go:496 +0x8ea
google.golang.org/appengine/internal.(*context).flushLog(0xc0001920c0, 0x1484b01, 0xc00002e100)
/Users/Steve/go/src/google.golang.org/appengine/internal/api.go:641 +0x3c7
google.golang.org/appengine/internal.handleHTTP.func1(0xc00002e120, 0xc0001920c0)
/Users/Steve/go/src/google.golang.org/appengine/internal/api.go:138 +0x56
created by google.golang.org/appengine/internal.handleHTTP
/Users/Steve/go/src/google.golang.org/appengine/internal/api.go:134 +0x350
exit status 2

我做错了什么?

最佳答案

简短的回答是,从 Go 1.12 开始,App Engine 就没有模拟器了。您将项目作为常规 Go 程序运行,因为在大多数情况下,现在它只是一个常规 Go 程序。

helloworld 示例尚未更新以遵循 App Engine 上 Go 1.12 的新约定...特别是因为它驻留在旧的已弃用库中。您不再像在 App Engine 外部那样调用 appengine.Main,而只需调用 http.ListenAndServe

他们(大部分)完成了一个完整的循环并打开了它,以便您在普通 Go 程序中使用的标准库调用现在可以在 App Engine 上使用,除了一些异常(exception)。这使得将几乎所有现有的独立 Go 程序轻松推送到 App Engine 变得更加轻松,这对他们来说是一个胜利,对开发人员来说也是一个胜利。

即使您是全新开始并且不是从旧版 SDK 迁移,您也应该阅读本文,因为它概述了您需要了解并留意开源库中的许多更改,这些更改可能会导致可能仍然是遗产。如果您正在迁移,它将特别有用。

https://cloud.google.com/appengine/docs/standard/go112/go-differences

值得注意的片段:

App Engine no longer modifies the Go toolchain to include the appengine package. If you are using the appengine package or the google.golang.org/appengine package, you must migrate to the Google Cloud client library.

关于go - 如何使用 Go 1.12 运行本地 GAE 模拟器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58101663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com