GO项目

时间:2016-04-14 07:06:31

标签: google-app-engine go

我的应用程序使用Appengine的开发软件正常工作。当我尝试部署时,我收到此错误:

main.go:11:找不到导入:“github.com/afoo/cohort/models”

我的文件夹结构如下所示,其中afoo是“标准”src / github.com设置的子目录,在GOPATH中引用:

Folder structure

app.yaml文件非常简单:

application: application-id
version: 1
runtime: go
api_version: go1

handlers:
  - url: /styles
    static_dir: styles

  - url: /scripts
    static_dir: scripts

  - url: /.*
    script: _go_app

main.go文件具有我已定义的URL处理程序func,例如:

func init() {

    // Register a handler for /.
    http.HandleFunc("/", MapNetworkHandler)
}

main.go中的模块导入是完全限定的,如下所示:

    "github.com/afoo/cohort/models"

Google小组在2014年进行了长时间的讨论,试图解释正确的文件夹设置。它位于:

https://groups.google.com/forum/#!searchin/google-appengine-go/init/google-appengine-go/dNhqV6PBqVc/Pm2HBrhdCAAJ

通过讨论,我了解到我需要将所有模块(此处,模型,存储库和工具)与主文件夹分开。但是,有一些令人困惑的其他.yaml文件应该进入每个模块文件夹,没有描述它们的外观,以及对以某种方式导入其他所有东西的骨架init(.go)文件的暗示。

无论好坏,我以身作则,我找不到一个能帮助我的好榜样。我肯定会感谢有关人员可能知道的正确文件夹结构和补充文件的详细解释。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对于项目文件夹中的代码,请使用相对于app.yaml的路径。

所以如果你有:

- Folder: MyProject (can be inside GOPATH/github or any other place)
  - app.yaml
  - Folder: MyCode (package mycode)
    - code1.go
    - Folder: MySubCode (package mysubcode)
      - code2.go

导入应该是:

import (
  "mycode"
  "mycode/mysubcode"
)

请注意,对于与app.yaml相同或相同级别的代码,您不要在app.yaml上指定github或其他任何内容。

更新:我将项目文件夹保留在GOPATH之外。像:

- ~ (user folder)
  - GOPATH folder
  - My GAE projects folder
     MyProject1

这种方式适用于从GOPATH导入,如“github / ”和从相对于app.yaml的路径,如“myproject /