Проблема с использованием пакета gorilla/mux в mac

# #go #mux #gopath #go-packages

Вопрос:

Я пытаюсь научиться создавать веб-сервер с помощью go и mux. Я импортирую mux в основной файл.go как import github.com/gorilla/mux . Однако, когда я пытаюсь запустить код. Я получаю следующую ошибку

 no required module provides package github.com/gorilla/mux: go.mod file not found in current directory or any parent directory; see 'go help modules'
 

Мой ГОПАТ-это /Users/michiokaku/Study/go

Общая структура моих каталогов такова

 go___
     pkg
     bin
     my_codes___
                main.go
 

Внутри pkg я нашел каталог с именем mux@v1.8.0 на тропинке pkg/mod/github.com/gorilla . Я думаю, что это то, что я скачал с помощью go get -u github.com/gorilla/mux . Но когда код запущен, я получаю ошибки.

В чем здесь проблема? Как мне решить эту проблему?

PS: Я использую mac.

Комментарии:

1. запуск go mod init в каталоге вашего проекта

2. Попробовал это сделать. Это выдало ошибку » не удается определить путь к модулю для исходного каталога /Пользователей/мичиокаку/Учебы/go_my_codes (за пределами GOPATH, путь к модулю должен быть указан)».

3. Что они подразумевают под этим?

4. Нет, модули могут находиться вне gopath. Что ты натворил ? Это должно быть go mod init <module_name>

5. О, ладно. Я просто запускаю режим go init. Я должен запустить мод go для инициализации github.com/gorilla/mux верно?

Ответ №1:

Прочитайте учебник: Начало работы с Go, если вы его еще не видели. Это довольно точно соответствует вашей ситуации.

Короче говоря:

  • Запустите go mod init example.com/projectname , заменив последний аргумент именем вашего модуля. Это создаст go.mod файл в текущем каталоге, который будет отслеживать ваши зависимости. Имя вашего модуля будет префиксом для всех пакетов в вашем модуле.
  • Запустить go mod tidy или go get github.com/gorilla/mux добавить github.com/gorilla/mux в качестве зависимости.

Вы упомянули, что видели каталог pkg/mod/github.com/gorilla ранее. Это часть кэша модулей Go, общего для всех проектов.

Комментарии:

1. Я последовал этому. и я получаю сообщение об ошибке, в котором говорится, что цикл импорта не разрешен

2. @MichioKaku Эта ошибка возникает, если пакет импортирует себя прямо или косвенно. В go mod init команде вы назвали свой проект github.com/gorilla/mux ? Если это так, измените имя на что-то другое, отредактировав строку модуля в go.mod или запустив go mod edit -module=example.com/somethingelse . Если нет, пожалуйста, добавьте дополнительную информацию.

3. Что я должен написать здесь как что-то другое? Я действительно не понял вашего предложения. Не могли бы вы уточнить? Могу ли я просто заменить github.com/mypackage или что-то в этом роде? И использовать то же имя, чтобы импортировать его в мой код go?

4. @MichioKaku обновите свой вопрос, добавив содержимое go.mod файла, а также добавьте сообщение об ошибке всего цикла импорта, обычно в нем перечислены пакеты в цикле, что делает совершенно ясным, в чем проблема.

5. @MichioKaku Если вы загружаете свой проект в любое место, куда его могут импортировать другие, используйте имя, соответствующее местоположению хранилища. Для GitHub это что-то вроде github.com/yourid/yourrepo. Если никто не будет импортировать пакеты в ваш проект, вы можете использовать любое допустимое имя, например «пример», «локальный» или «тест».