«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему в модулях Go возникает ошибка «Модуль замены без версии должен быть путем к каталогу»?

Почему в модулях Go возникает ошибка «Модуль замены без версии должен быть путем к каталогу»?

Опубликовано 14 ноября 2024 г.
Просматривать:863

Why Does

Модули Go и неуловимость замен

В области модулей Go директива replace обещает заменить локально разработанный пакет для удаленного, что позволяет вам работать с собственным кодом, экспериментируя или устраняя неполадки. Однако, как вы уже знаете, замена пакета без указанной версии может оказаться неприятным занятием.

Возникло сообщение об ошибке: «Модуль замены без версии должен иметь путь к каталогу (корневой или начинающийся с .) ,» подчеркивает важнейшее требование о том, что путь, указанный в директиве replace, должен быть абсолютным или относительным к корню модуля.

Преодоление затруднения пути

Возникает загадка пути от того, как структурированы модули Go. Файл go.mod служит центральным элементом, устанавливающим идентичность модуля и его зависимости. На пакеты, находящиеся в том же модуле, что и файл go.mod, можно ссылаться напрямую, без необходимости замены. Однако при работе с пакетами, внешними по отношению к модулю, в игру вступает директива replace.

В вашем случае вы намеревались использовать локальный пакет с именем mypack. Для этого вы указали следующую директиву replace в файле go.mod:

replace mypack -> ./src/mypack

К сожалению, этот путь не является ни абсолютным, ни относительным к модулю. корень. Префикс «./» обозначает путь относительно текущего рабочего каталога, который не совпадает с корнем модуля.

Установление пути к гармонии

Чтобы Чтобы устранить эту проблему, выполните следующие действия:

  1. Преобразуйте mypack в модуль go: Создайте файл go.mod в папке mypack. Это сделает mypack независимым модулем.
  2. Укажите абсолютный путь или путь относительно корня модуля: В файле go.mod измените директиву replace, чтобы использовать абсолютный или относительный путь к mypack. Например, если mypack является родственным корнем вашего модуля, вы можете использовать:
replace mypack -> ../mypack

Дополнительные рекомендации

Помните, что директива replace предназначена для временного локального переопределения. Если вы хотите произвести постоянную замену, рассмотрите возможность использования инструмента поставщика или явного включения mypack в свой модуль.

Связанный ресурс:

  • Как использовать модуль, который находится за пределами «GOPATH» в другом модуле?
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3