猿问

GO 项目的 Appengine 文件夹结构

我的应用程序使用 Appengine 的开发软件运行良好。当我尝试部署时,出现此错误:

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

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

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 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) 文件的暗示。


不管是好是坏,我都是通过例子学习的,我找不到对我有帮助的好例子。我肯定会很感激任何人可能知道的正确文件夹结构和补充文件的详细解释。


拉风的咖菲猫
浏览 229回答 1
1回答

阿波罗的战车

对于项目文件夹中的代码,使用相对于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")请注意,您没有指定 github 或任何位于app.yamlapp.yaml 下方或相同级别的for 代码之上的任何内容。更新:我将项目文件夹保留在 GOPATH 之外。喜欢:- ~ (user folder)  - GOPATH folder  - My GAE projects folder     MyProject1这样,它既可以从 GOPATH 的“github/ ”导入,也可以从相对于 app.yaml 的路径导入,例如“myproject/ ”
随时随地看视频慕课网APP

相关分类

Go
我要回答