2016-05-25 2 views
0

Я использую систему Gin. В локальном режиме разработки: goapp serve все работает нормально.Перейти на Google app engine - не удается найти файлы шаблонов

func init() { 
    route := gin.Default() 
    route.LoadHTMLGlob("../*/views/**/*.html") 
    ... 
} 

Но после развёртывания:

паника: HTML/шаблон: шаблон не соответствует ни одного файла: ../*/views/**/*.html

OK. Я стараюсь:

func init() { 
    route := gin.Default() 
    dir, _ := filepath.Abs(filepath.Dir(os.Args[0])) 
    route.LoadHTMLGlob(dir + "/../*/views/**/*.html") 
    ... 
} 

Тот же результат.

Я стараюсь принести реж:

... 
dir, err := filepath.Abs(filepath.Dir(os.Args[0])) 
if err != nil { 
    ... 
} 
c.String(http.StatusOK, "Dir: ", dir) 

c.String(http.StatusOK, "\nOK") 
res, err := filepath.Glob(dir + "/*") 
c.String(http.StatusOK, fmt.Sprintf("%v | %v\n\n", res, err)) 

c.String(http.StatusOK, "Dirs:") 
res, err = filepath.Glob(dir + "/**/*") 
c.String(http.StatusOK, fmt.Sprintf("%v | %v", res, err)) 
... 

Результат:

Dir:% (EXTRA строка =/база/данные/дома/приложения/TMP-LEIYJC/_ah) OK [/base/data/home/apps/tmp-LEIYJC/_ah/exe] |

Dirs: [] |

Ooops. Что я сделал не так?

UPD:

app.yaml

runtime: go 
api_version: go1 

handlers: 
- url: /images 
    static_dir: ../static/images 

- url: /css 
    static_dir: ../static/css 

- url: /js 
    static_dir: ../static/js 

- url: /fonts 
    static_dir: ../static/fonts 

- url: /.* 
    script: _go_app 

Я положил app.yaml в подкаталог, причину без этого еще одна проблема: [https://groups.google.com/forum/#!topic/google-appengine-go/dNhqV6PBqVc

Структура папок:

app/ 
    app.go 
    app.yaml 
static/ 
    ... 
frontend/ 
controllers/ 
    UserController.go 
    ... 
models/ 
    UserModel.go 
    ... 
views/ 
     home/ 
      *.html 
     user/ 
      *.html 
     anotherfolder/ 
      *.html 
backend/ 
controllers/ 
    MainController.go 
    ... 
models/ 
    SomeModel.go 
    ... 
views/ 
     main/ 
      *.html 
     anotherfolder/ 
      *.html 
... 
+0

Можете ли вы поделиться своим app.yaml? – Sean

+0

@Sean Я добавил app.yaml и некоторые структуры папок – mrLSD

ответ

1

Если я не ошибаюсь, все ваши каталоги должны жить в корневом каталоге, где существует ваш app.yaml. Так что вам нужно что-то подобное. Кроме того, если вы хотите, чтобы ваше приложение обращалось к статическому каталогу файлов, вам необходимо добавить application_readable: true в это определение каталогов. См. Следующий пример. Надеюсь это поможет.

app/ 
    app.go 
    app.yaml 
    static/ 
     ... 
    frontend/views/ 
     home/ 
     *.html 
    anotherfolder/ 
     *.html 

Пример каталога Определение:

- url: /s 
    static_dir: s/ 
    application_readable: true 
+0

Спасибо за ответ! Но app/as sub directiry не случайно. Есть еще одна проблема: (https://groups.google.com/forum/#!topic/google-appengine-go/dNhqV6PBqVc) например: (https://github.com/andrascsibi/how- много-pullups) – mrLSD

+0

Да, у меня такая же проблема, как у сеона – ccsakuweb

2

Я нашел следующее решение.

I reorginize структуру:

app/ 
    static/ 
     ... 
    frontend/ 
     views/ 
      home/ 
       *.html 
      user/ 
       *.html 
      anotherfolder/ 
       *.html 
    backend/ 
     views/ 
      main/ 
       *.html 
      anotherfolder/ 
       *.html 
    app.go 
    app.yaml 

frontend/ 
    controllers/ 
     UserController.go 
     ... 
    models/ 
     UserModel.go 
     ... 
backend/ 
    controllers/ 
     MainController.go 
    ... 
    models/ 
     SomeModel.go 
    ... 
... 

Изменение:

app.yaml

runtime: go 
api_version: go1 

handlers: 
- url: /images 
    static_dir: static/images 

- url: /css 
    static_dir: static/css 

- url: /js 
    static_dir: static/js 

- url: /fonts 
    static_dir: static/fonts 

- url: /.* 
    script: _go_app 

Это действительно странно ecision GAE. Я не могу поместить app.yaml в корневую директорию для приложения, потому что у меня появилось сообщение о панике для импорта дубликатов.И я не могу поместить шаблоны в корневой каталог, потому что это не под масштабом, только в папке parent для app.yaml