我的应用程序使用Appengine的开发软件可以正常工作。当我尝试部署,我得到这个错误:GO项目的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处理器funcs中,例如:
func init() {
// Register a handler for /.
http.HandleFunc("/", MapNetworkHandler)
}
模块进口main.go是完全合格的,而像这样:
"github.com/afoo/cohort/models"
谷歌组从2014年开始进行长时间的讨论,试图解释正确的文件夹设置。它位于在这里:
从这个讨论中,我了解到,我需要所有模块(在这里,模型,存储库,并utils的)从主文件夹分开。但是有一些令人困惑的提及其他.yaml文件应该放到每个模块文件夹中,没有描述它们的外观,以及暗指init(.go)文件的暗指,它以某种方式导入其他所有内容。
是好还是坏,我学习的榜样,我不能找到一个很好的例子,这将有助于我。我非常感谢有人可能知道的正确文件夹结构和补充文件的详细解释。
感谢您的帮助!
谢谢,亚历山大路径。我宁愿以这种方式设置应用程序,但出现类似“app file xxx.go”与从GOPATH导入的相同文件冲突的错误。“根据我原来发布的关于Google Groups链接的评论,这个错误应该通过”将所有yaml文件及其关联的源文件保存在GOPATH之外,然后导入您需要的任何其他包来解决在你的GOPATH中从这些文件中找到“在开发环境下工作,但我似乎无法部署它 – Brent
尝试将你的项目移动到GOPATH之外 - 我就是这样做的,它适用于我。更新答案与我的设置 –
谢谢,亚历山大。您的解决方案,本地和上传。但有趣的是,我的选择IDE(VS代码)报告导入我的模块时出错: “Can not find package '模型'中的任何一个:[GOROOT路径] [GOPATH路径]“ 我会留下那个。 – Brent