2015-11-24 3 views
0

Я изо всех сил пытаюсь выяснить проблему с os.Open. Я продолжаю получать ошибку «нет такого файла или каталога» при использовании os.Open в папке с именем templates. Поэтому у меня есть моя папка MVCApp с bin pkg src и шаблонами. Тогда у меня есть главная в папке src. Поэтому у меня есть этот код:Golang os.Open Нет такой ошибки файла или каталога

basePath := "templates" 
templateFolder, err := os.Open(basePath) 
if err != nil { 
    log.Fatal(err) 
} 
defer templateFolder.Close() 

Я думаю, что это что-то делать с BasePath, что я использую с открытым, но я не могу понять, как мне нужно предварить «шаблоны» для того, чтобы найти этот каталог. Я уверен, что это легко исправить, но это меня озадачивает. Любая помощь будет принята с благодарностью.

+2

Я на 99% уверен, что это проблема «рабочего каталога». Сделайте быстрый вызов, чтобы перечислить содержимое текущего каталога, чтобы убедиться, что он находится в нужном месте. – Ruslan

+0

Вы знаете, как сделать этот звонок в Go? Я все еще очень новичок в этом языке. – j5juice

+1

Hm, попробуйте 'os.Getwd()'. Он должен предоставить вам текущий рабочий каталог. – Ruslan

ответ

3

В нашем обсуждении в комментариях выяснилось, что проблема была вызвана запуском приложения в некорректном рабочем каталоге.

Исправление было изменить путь, как таковой:

basePath := "../../templates" 

Вы также можете использовать os.Chdir для изменения рабочего каталога постоянно (на время процесса), и избегать использования ../... Больше информации здесь: https://golang.org/pkg/os/#File.Chdir

+0

FYI, ваш рабочий каталог не имеет отношения к источнику приложения и зависит от того, как вы вызываете приложение. У вас должен быть правильный способ настройки расположения шаблона для последовательного развертывания. – JimB

Смежные вопросы