Я хочу переместить код, используемый конкретным субдоменом, свой собственный проект, который будет импортироваться основной базой кода, которая в настоящее время находится. Я могу успешно импортировать код из субдомена в основной проект , пока я не добавлю код Gorilla Mux. Например, это работает:Тип конфликтов между проектами
// imports and non-relevant routes removed for simplicity
r := mux.NewRouter()
// Primary site routes here...
s := r.Host("subdomain-regex-here").Subrouter()
s.HandleFunc("/", people.Index)
http.ListenAndServe("localhost:8080", r)
Но когда я двигаю субдомен свой собственный проект и импортировать его, затем вызвать LoadRoutes() функция, которая проходит в объекте mux.Router от основного сайта, я получаю ошибка. Вот код:
// Primary Project
r := mux.NewRouter()
// Primary site routes here...
// function located in the subdomain go project, which is imported
func LoadRoutes(host string, r *m.Router) {
s := r.Host(host).Subrouter()
s.HandleFunc("/", people.Index)
s.HandleFunc("/people", people.Index)
s.HandleFunc("/person/new", people.New)
}
# командной строки-аргументы ./main.go:25: не может использовать г (типа * "primary_site/продавец/github.com/гориллы/Мультиплексор" .Router), как type * "subdomain_site/vendor/github.com/gorilla/mux" .Router в аргументе для routers.LoadRoutes
Похоже, у меня есть два экземпляра мух Гориллы из двух отдельных проектов, которые противоречат друг другу. Я только импортирую пакеты с сайта субдомена на основной сайт, а не наоборот. Этот точный код работает отлично, если у меня есть это в одном проекте, но когда я пытаюсь отделить проекты, он ломается.
Поскольку я передаю экземпляр mux.NewRouter(), почему у меня конфликт?
По этой причине в вашем проекте должен быть только один каталог поставщиков верхнего уровня. – JimB
Это две отдельные группы кода - основной сайт - это проект, сайт субдомена - это пакет. – dingalingchickenwiing
Если они оба импортируются в одну и ту же программу, они не являются отдельными в отношении инструментов сборки. – JimB