为什么go-app-builder无法找到本地导入?

时间:2016-07-23 01:55:41

标签: google-app-engine go

我目前正在Go中编写应用程序并尝试部署多个服务。我正在运行以下命令:gcloud app deploy dispatch.yaml app/app.yaml mod1/mod1.yaml

app.yaml文件对应默认服务并成功部署,但服务mod1返回此错误:

ERROR: (gcloud.app.deploy) Error Response: [9] Deployment contains files that cannot be compiled: Compile failed: 2016/07/22 18:17:14 go-app-builder: build timing: 1×compile (53ms total), 0×link (0 total) 2016/07/22 18:17:14 go-app-builder: failed running compile: exit status 1

mod1.go:4: can't find import: "myapp/mod1/web_console"

My-Macbook: myapp$ gcloud app deploy dispatch.yaml app/app.yaml mod1/mod1.yaml

我的文件结构如下:

  • / MY_PROJECT
    • / SRC
      • / MyApp的
        • /应用
          • app.go
          • 的app.yaml
        • / MOD1
          • mod1.go
          • mod1.yaml
          • / web_console
            • web_console.go

mod1.go:

package mod1

import (
    "myapp/mod1/web_console"
)

func init() {
    // Initializing Web Console establishes connection
    // to the database and also creates routes
    var wc *web_console.WebConsole
    wc = web_console.NewWebConsole(true)
    wc.Configure()
}

mod1.yaml:

module: mod1
runtime: go
api_version: go1

handlers:
- url: /.*
  script: _go_app

app.yaml:

module: default
runtime: go
api_version: go1

handlers:
- url: /.*
 script: _go_app

感谢您抽出宝贵时间提供帮助!

2 个答案:

答案 0 :(得分:0)

每个GAE服务/模块都是独立的,无法访问服务/模块目录 之外的任何内容:

  • .yaml文件存在的目录
  • 是在部署期间上传的内容
  • 被认为是" root"该服务/模块的目录,一切都与它相关

在您的特定情况下,您需要确保没有服务/模块引用父myapp目录(这只是应用程序内容的组织占位符,与您相关但没有实际存在于GAE )。我相信您的mod1.go导入应如下所示:

package mod1

import (
    "web_console"
)

但是带着一点点盐,我实际上并不熟悉go。

答案 1 :(得分:0)

好像我使用了错误的工具进行部署。我使用print tensor[0].eval() 运行命令,并且能够成功部署服务而没有问题。