Модули Go и неуловимость замен
В области модулей Go директива replace обещает заменить локально разработанный пакет для удаленного, что позволяет вам работать с собственным кодом, экспериментируя или устраняя неполадки. Однако, как вы уже знаете, замена пакета без указанной версии может оказаться неприятным занятием.
Возникло сообщение об ошибке: «Модуль замены без версии должен иметь путь к каталогу (корневой или начинающийся с .) ,» подчеркивает важнейшее требование о том, что путь, указанный в директиве replace, должен быть абсолютным или относительным к корню модуля.
Преодоление затруднения пути
Возникает загадка пути от того, как структурированы модули Go. Файл go.mod служит центральным элементом, устанавливающим идентичность модуля и его зависимости. На пакеты, находящиеся в том же модуле, что и файл go.mod, можно ссылаться напрямую, без необходимости замены. Однако при работе с пакетами, внешними по отношению к модулю, в игру вступает директива replace.
В вашем случае вы намеревались использовать локальный пакет с именем mypack. Для этого вы указали следующую директиву replace в файле go.mod:
replace mypack -> ./src/mypack
К сожалению, этот путь не является ни абсолютным, ни относительным к модулю. корень. Префикс «./» обозначает путь относительно текущего рабочего каталога, который не совпадает с корнем модуля.
Установление пути к гармонии
Чтобы Чтобы устранить эту проблему, выполните следующие действия:
replace mypack -> ../mypack
Дополнительные рекомендации
Помните, что директива replace предназначена для временного локального переопределения. Если вы хотите произвести постоянную замену, рассмотрите возможность использования инструмента поставщика или явного включения mypack в свой модуль.
Связанный ресурс:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3