托管在 Google App Engine 环境中的 Golang Web 应用出错;应用前端为 BigQuery



我构建了一个Golang Web应用程序,前端是Google BigQuery项目的前端。该应用程序具有这些导入

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格式化并删除私人信息(:

C:Golang Web Devgolang-web-dev-masterbigqueryApp_AppEngine>gcloud app deploy
ERROR: (gcloud.app.deploy)
Staging command
[C:Program Files (x86)GoogleCloud SDKgoogle-cloud-sdkplatformgoogle_appenginegoapp-stager.exe    
C:Golang Web Devgolang-web-dev-masterbigqueryApp_AppEngineapp.yaml    
C:Golang Web Devgolang-web-dev-masterbigqueryApp_AppEngine    
c:----------appdatalocaltemp----------------]
failed with return code [1].
-------------------------------------STDOUT-------------------------------------    
-------------------------------------STDERR-------------------------------------
2017/07/18 18:14:44 failed analyzing C:Golang Web Devgolang-web-dev-masterbigqueryApp_AppEngine:
cannot find package "google.golang.org/appengine/socket" in any of:
($GOROOT not set)
C:Go Workspacesrcgoogle.golang.orgappenginesocket (from $GOPATH)    
GOPATH: C:Go Workspacesrcgoogle

我将此错误追溯到导入的

"cloud.google.com/go/bigquery"

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

google.golang.org/appengine/socket

包在应用程序中,我得到了另一个编译错误; 看起来这个页面说甚至不要去那里。接下来,我使用原始应用程序尝试了此视频中的想法,将原始的main((函数保留在main.go中。我打字了

gcloud app deploy

在云外壳窗口中。我明白了

$ ---_---------@---------------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]

有关更多详细信息,请参阅:本地应用程序引擎包安装

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( 从指向托管 main.go 文件的目录的 DOS 窗口中,运行

gcloud app deploy

然后运行应用

gcloud app browse

相关内容

  • 没有找到相关文章

最新更新