все в каталоге /home/frolov/work/src/
Пытаюсь запустить "go install ./cmd/todo-list-server/" и получаю ошибку:
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
При попытке go mod init :
go: cannot determine module path for source directory /home/frolov/work/src (outside GOPATH, module path must be specified)
Подскажите, пожалуйста, что нужно передать go mod init, чтобы она создала файл go.mod?
Спасибо!
в go mod init надо передать название модуля
Сделал так: go mod init todo-list go mod tidy Но при попытке go install ./cmd/todo-list-server/: cmd/todo-list-server/main.go:12:2: package restapi is not in GOROOT (/usr/local/go/src/restapi) cmd/todo-list-server/main.go:13:2: package restapi/operations is not in GOROOT (/usr/local/go/src/restapi/operations)
если модуль называется todo-list, то все пакеты внутри него должны импортировать друг друга тоже начиная с todo-list
Вот это я не очень понимаю, все файлы созданы генератором... Мне нужно что-то править руками?
вам нужно поменять флаг server-package
Я бы распаковал в корень.
В корень каталога пользователя /home/frolov/ ?
В корень проекта.
Вот тут я не очень понимаю Проект создан в каталоге /home/frolov/work/src Там есть: cmd models restapi swagger.yml
Ну так правильный путь укажите. swagger generate server --target . --spec ./swagger/swagger.yml --name NameProject
Опять не понимаю, какой путь правильный в моем случае, если файлы лежат в /home/frolov/work/src? Эту команду мне из какого каталога запускать?
Главное непонятно, чего команды из туториала то не работают?
Сначала создайте папку с проектом, потом git init bla-bla в ней, внутрь кладите swagger.yml потом go mod init, потом генерите и тащите зависимости. Оптимально в git init указать полный путь как на гитхабе.
Всё работает. В src создайте проект. И зайдите в эту папку. Если я правильно понимаю что у вас с путями.
А, го инсталл не надо, надо go run ./cmd/... --port 3000
$ go run ./cmd/... --port 3000 go: go.mod file not found in current directory or any parent directory; see 'go help modules'
Сейчас попробую все заново в новом пользователе
Вы не читаете что я вам выше писал, про git init, go mod?
Сделал в каталоге /home/goswag/work/src git init ls swagger.yml set $GOPATH=/home/goswag/work/src Запускаю генератор: swagger generate server -A todo-list -f ./swagger.yml /work/src$ go mod init go: cannot determine module path for source directory /home/goswag/work/src (outside GOPATH, module path must be specified) Example usage: 'go mod init example.com/m' to initialize a v0 or v1 module 'go mod init example.com/m/v2' to initialize a v2 module Разбираюсь с GOPATH
Зачем прямо в src? Сделайте уже папку в src с проектом, и зайдите в неё, там и работайте.
Мнда, мне дается с трудом( Никак не пойму, какие папки и где сделать. Вот я создал папки /home/goswag/work/src Не пойму, куда нужно записать файл swagger.yml и из какой папки запускать все эти команды? Сейчас этот файл лежит в каталоге /home/goswag/work/src Настроил так, это верно? $ echo $GOPATH /home/goswag/work/src
Или мне нужно наборот, сделать папку /home/goswag/src/work и туда положить файл swagger.yml?
Ну вроде так. Я не привык держать в других местах проекты, как изначально положил в ~/go/src, так они и лежат.
Спасибо, сейчас попробую сделать /home/goswag/go/src/todoprj
В общем, моя проблема что я после Perl привык что проекты могут лежать где угодно и как угодно, а тут это не так
в go это в общем-то теперь тоже так
В теории да, но пока я не разобрался до конца. Научился настраивать пути к локальным модулям при помощи go.mod, но все равно как-то непривычно)
Обсуждают сегодня