Я создаю веб-приложение с Compojure 1.6.0. Для сторонних библиотек JS я устанавливаю их с помощью npm, который помещает их в папку с именем node_modules
(не настраивается). Чтобы обслужить их, я сделал это:
(route/files "/node_modules" {:root "node_modules/"})
, который отлично работает в разработке. Для производства я развернул Uberwar, поэтому перед созданием войны я просто скопировал эти файлы в общедоступные ресурсы:
# deploy.sh
cp -r node_modules/ resources/public/node_modules/
lein ring uberwar
Это все отлично работает.
Теперь я хотел бы изменить свои пути URI на /static/
вместо /node_modules/
. Я попытался изменить свою линию маршрутизации, чтобы сказать:
(route/files "/static" {:root "node_modules/"})
и затем обновляет все ссылки HTML, которые указывают на эти URI. Это работает, как и ожидалось, в разработке (lein ring server-headless
), но в производственной (развернутый warfile) происходит сбой. Мой обработчик route/not-found
вызывается для любого пути в /static/
.
Что дает? Почему путь URI как-то связан с этим, и только в одной среде?