为了账号安全,请及时绑定邮箱和手机立即绑定

GO 项目的 Appengine 文件夹结构

GO 项目的 Appengine 文件夹结构

Go
拉风的咖菲猫 2022-01-04 13:38:23
我的应用程序使用 Appengine 的开发软件运行良好。当我尝试部署时,出现此错误:main.go:11: 找不到导入:“github.com/afoo/cohort/models”我的文件夹结构如下所示,其中 afoo 是“标准” src/github.com 设置的子目录,在 GOPATH 中引用:app.yaml 文件非常简单:application: application-idversion: 1runtime: goapi_version: go1handlers:  - url: /styles    static_dir: styles  - url: /scripts    static_dir: scripts  - url: /.*    script: _go_appmain.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) 文件的暗示。不管是好是坏,我都是通过例子学习的,我找不到对我有帮助的好例子。我肯定会很感激任何人可能知道的正确文件夹结构和补充文件的详细解释。
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

对于项目文件夹中的代码,使用相对于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/ ”


查看完整回答
反对 回复 2022-01-04
  • 1 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信