gpt4 book ai didi

google-app-engine - 在 Google App Engine 环境中托管的 Golang 网络应用程序出错;应用程序前端 BigQuery

转载 作者:IT王子 更新时间:2023-10-29 02:21:44 25 4
gpt4 key购买 nike

我构建了一个作为 Google BigQuery 项目前端的 Golang 网络应用程序。该应用程序具有这些导入

import (
"context"
"html/template"
"log"
"net/http"
"regexp"
"strings"
"strconv"
"cloud.google.com/go/bigquery"
"google.golang.org/api/iterator"
)

以及 BigQuery 安全凭证的 JSON 文件。在本地,它在 localhost:8080 上完美运行。然后,我尝试使用 Google App Engine 托管它,但遇到了一些错误。

对于 Google App Engine 部署,我首先在本地安装 Google Cloud SDK,运行 gcloud init,然后安装

gcloud components install app-engine-go
bq
core
gsutil
gcloud
beta
app-engine-python

包裹。我从 main.go 中删除了 main() 函数,并且项目目录有一个 YAML 文件。我跑了

gcloud config set project {correct project ID}

然后在 DOS 窗口中运行

gcloud app deploy

在项目目录。我收到此错误(针对 SO 格式化并删除私有(private)信息):

C:\Golang Web Dev\golang-web-dev-master\bigqueryApp_AppEngine>gcloud app deploy

ERROR: (gcloud.app.deploy)
Staging command

[C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\goapp-stager.exe
C:\Golang Web Dev\golang-web-dev-master\bigqueryApp_AppEngine\app.yaml
C:\Golang Web Dev\golang-web-dev-master\bigqueryApp_AppEngine
c:\-----\-----\appdata\local\temp\--------\--------]

failed with return code [1].

-------------------------------------STDOUT-------------------------------------
-------------------------------------STDERR-------------------------------------

2017/07/18 18:14:44 failed analyzing C:\Golang Web Dev\golang-web-dev-master\bigqueryApp_AppEngine:

cannot find package "google.golang.org/appengine/socket" in any of:
($GOROOT not set)
C:\Go Workspace\src\google.golang.org\appengine\socket (from $GOPATH)
GOPATH: C:\Go Workspace\src\google

我将这个错误追溯到导入的

"cloud.google.com/go/bigquery"

包;另一个没有 cloud.google.com/go/bigquery 的“测试”应用程序使用此技术可以正常工作。我试图导入

google.golang.org/appengine/socket

应用程序中的包,我又遇到了一个编译错误;看起来像 this page说甚至不要去那里。接下来我尝试了this vid中的思路使用原始应用程序,将原始 main() 函数保留在 main.go 中。我输入了

gcloud app deploy

在 Cloud Shell 窗口中。我明白了

$ ---_---------@---------------X------:~/bigqueryApp
$ gcloud app deploy
ERROR: (gcloud.app.deploy) Staging command [/google/google-cloud-sdk/platform/google_appengine/goroot-1.6/bin/go-app-stager
/home/---_---------/bigqueryApp/app.yaml /tmp/---------/---------]
failed with return code [1].

------------------------------------ STDOUT ------------------------------------
------------------------------------ STDERR ------------------------------------

2017/07/18 21:30:23 failed analyzing /home/---_---------/bigqueryApp:
cannot find package "google.golang.org/api/iterator" in any of:
($GOROOT not set)
/home/---_---------/gopath/src/google.golang.org/api/iterator (from $GOPATH)
/google/gopath/src/google.golang.org/api/iterator
GOPATH: /home/---_---------/gopath:/google/gopath

错误。该应用程序显然导入了迭代器包。我研究/试验/等来修复这两种技术中的错误,但没有运气。如果有人有关于如何修复这些错误的想法,我很想知道他们,我将不胜感激。

谢谢!

最佳答案

解决方法:

1) 删除“上下文”导入

2) 导入“google.golang.org/appengine”;看

    [https://github.com/golang/appengine/blob/master/README.md][1]

有关更多详细信息,请回复:本地 appengine 包安装

3)这个函数

    http.HandleFunc("/", bqPage)

通话

    bqPage(w http.ResponseWriter, req *http.Request)

作为处理函数。将第二个 req 参数传递给构建/调用 bigquery 客户端的代码:

    ctx := appengine.NewContext(req)

// Get the projectID value from the Google Cloud Console:

projectID := "--------------"

// Create a client.

client, err := bigquery.NewClient(ctx, projectID)

一旦您有了客户端对象,您就可以开始工作了。

4) 从 DOS 窗口指向托管 main.go 文件的目录,运行

    gcloud app deploy

然后运行应用

    gcloud app browse

关于google-app-engine - 在 Google App Engine 环境中托管的 Golang 网络应用程序出错;应用程序前端 BigQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45228766/

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