我想使用Go为App Engine上的应用程序创建一个休息后端。
我已将我的文件安排为休闲:
-> app/
-> auth/
-> auth.go
-> app.go
-> app.yaml
通常我会在app.go中使用import "github.com/user/app/auth"
导入auth包,但是我收到错误,说文件之间存在冲突(我现在无法粘贴错误)。
在google上寻找解决方案后,我发现如果我删除了github.com ...而只是import "auth"
它会起作用,而且确实如此。
解决方案是否最佳解决方案?
答案 0 :(得分:2)
错误是否类似于Failed parsing input: app file auth/auth.go conflicts with same file imported from GOPATH
?
我对https://groups.google.com/forum/#!msg/google-appengine-go/dNhqV6PBqVc/ihzI5vgdE1EJ的解读是,现在更好地安排您的文件,以便您可以使用github.com/user/...
导入。这是由于SDK 1.9.1的新行为破坏了一些项目布局。使用import "auth"
大部分都会有效,但会中断goapp test
并可能导致其他问题。
相反,我们的目的是确保在app.yaml
和app.go
级别或之下没有任何其他代码。为此,您可以将auth
向上移动两级,转移到app
的父级,然后将其导入为github.com/user/auth
。如果您可以在其他应用程序中使用相同的代码,那将是有意义的。
-> app/
-> app.go
-> app.yaml
-> auth/
-> auth.go
或者将auth
向上移动一级,然后将yaml和app.go
移动到子目录中。如果你这样做,你必须进入该目录才能运行goapp server
,因为那是app.yaml
所在的位置。
-> app/
-> auth/
-> auth.go
-> app/
-> app.go
-> app.yaml
无论哪种方式,*.go
与同一目录中只应有一个app.yaml
文件。