gpt4 book ai didi

google-app-engine - 在 App Engine Standard 上进行销售

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

我知道这个主题已经被引用过几次了。不幸的是,我仍然无法为我的用例找到可行的解决方案。

我似乎无法让 vendoring 在 App Engine Standard 上为我的 Go 应用程序工作。我正在使用 dep用于销售。

我正在构建一个 GraphQL API,这是我的文件夹结构:

/GOPATH
└──/src
└──/acme
├──/app
| ├── app.yaml
| └── app.go
├──/src
| ├── /mutations/
| ├── /queries/
| └── /types/
└──/vendor/

在 Cloud Shell 上运行 goapp serve app/app.yaml 失败并显示

INFO     2018-05-14 15:42:08,386 devappserver2.py:764] Skipping SDK update check.
INFO 2018-05-14 15:42:08,471 api_server.py:268] Starting API server at: http://0.0.0.0:47213
INFO 2018-05-14 15:42:08,600 dispatcher.py:199] Starting module "default" running at: http://0.0.0.0:8080
INFO 2018-05-14 15:42:08,601 admin_server.py:116] Starting admin server at: http://0.0.0.0:8000
ERROR 2018-05-14 15:42:13,983 go_runtime.py:181] Failed to build Go application: (Executed command: /google/go_appengine/goroot/bin/go-app-builder -app_base /home/xxx/gopath/src/acme/app -arch 6 -dynamic -goroot /google/go_appengine/goroot -gopath /home/xxx/gopath:/google/gopath -nobuild_files ^^$ -incremental_rebuild -unsafe -binary_name _go_app -extra_imports appengine_internal/init -work_dir /tmp/tmpbt8DA2appengine-go-bin -gcflags -I,/google/go_appengine/goroot/pkg/linux_amd64_appengine -ldflags -L,/google/go_appengine/goroot/pkg/linux_amd64_appengine app.go)
/home/xxx/gopath/src/acme/vendor/github.com/graphql-go/graphql/definition.go:4: can't find import: "context"

2018/05/14 15:42:09 Can't find package "context" in $GOPATH: cannot find package "context" in any of:
/home/xxx/gopath/src/acme/vendor/context (vendor tree)
/google/go_appengine/goroot/src/context (from $GOROOT)
/home/xxx/gopath/src/context (from $GOPATH)
/google/gopath/src/context

看起来问题可能是某个 vendor 没有为“上下文”使用完整的依赖项名称。(编辑:可能不是这样,因为我使用的是 1.8)

有没有人成功地使用 vendoring 在 App Engine Standard 上进行部署?一整天都在为此烦恼。

最佳答案

以防万一其他人遇到这个问题,这是我采用的似乎对我有用的方法。

目录结构如下:

/GOPATH
├──/appengine
| ├──/.git/
| ├──/project1
| | ├── app.yaml
| | └── app.go
| └──/project2
| ├── app.yaml
| └── app.go
└──/src
├──/project1
| ├──/.git/
| ├──/mutations/
| ├──/queries/
| ├──/types/
| ├──/vendor/
| └──/main.go
└──/project2
├──/.git/
├──/foo/
├──/bar/
├──/vendor/
└──/main.go

appengine 文件夹下的每个 app.go 文件包含:

package projectX

import "projectX"

func init() {
projectX.Run()
}

src/projectX 下的每个 ma​​in.go 文件包含:

package projectX

import (
// Import whatever you need
"google.golang.org/appengine"
)

func Run() {
// Do whatever you need
appengine.Main()
}

似乎确实有必要在 $GOPATH/src 之外拥有包含 app.yaml 的文件夹。

如果您需要让每个项目在自己的 git 仓库下进行版本控制,而不是拥有一个单体仓库,那么这对于版本控制来说也不理想。我通过对每个项目进行版本控制并分别对 appengine 文件夹进行版本控制来解决这个问题。

关于google-app-engine - 在 App Engine Standard 上进行销售,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50334680/

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