#jquery #scala #playframework #webjars
#jquery #scala #playframework #webjars
Вопрос:
Моя настройка использовалась org.webjars.webjars-play.2.5.0
с Scala Play 2.5. Я использовал пару библиотек WebJars для разных целей и в итоге получил 2 jquery.min.js
файла, расположенных в 2 каталогах, target/web/web-modules/main/webjars/lib/jquery
и target/web/web-modules/main/webjars/lib/jquery/dist
.
Когда я обратился к индексной веб-странице, [IllegalArgumentException: jquery/jquery.min.js could not be found
было выдано исключение <script type="text/javascript" src="@routes.WebJarAssets.at(webJarAssets.locate("jquery/jquery.min.js"))"></script>
, хотя файл существовал в target/web/web-modules/main/webjars/lib/jquery/jquery.min.js
. Я пробовал другой путь lib/jquery/jquery.min.js
, чтобы найти скрипт, но безуспешно. Однако, когда dist/jquery.min.js
используется, он может найти скрипт, но это та версия, которую я хотел.
Как мне настроить, чтобы помочь WebJarAssests найти jquery.min.js
в target/web/web-modules/main/webjars/lib/jquery
? Как мне запретить другим веб-редакторам загружать разные версии jquery.min.js
в мой проект? Спасибо
Тем временем я использую <script type="text/javascript" src="@routes.Assets.at("lib/jquery/jquery.min.js")"></script>
, чтобы добиться успеха.
Обновление 1
Текущая настройка,
class ApplicationController @Inject() (
val webJarAssets: WebJarAssets,
val silhouette: Silhouette[CookieAuthenticatorEnv],
...
) extends AuthController {...}
@(webJarAssets: WebJarAssets, ...)(implicit messages: Messages)
GET /webjars/*file controllers.WebJarAssets.at(file)
Комментарии:
1. Я использую именно этот (исходный) код. Выглядит ли ваш контроллер примерно так,
class MyController @Inject() (implicit webJarAssets: WebJarAssets, ...
и ваша подпись представления примерно так@(...)(content: Html)(implicit webJarAssets: WebJarAssets)
, и маршрут похожGET /webjars/*file controllers.WebJarAssets.at(file)
?2. Мой
webJarAssets
неimplicit
. Я внедрил WebJarAssests через Guice, и это сработало для других библиотек JS, за исключением jQuery.ja. Это проблема?3. jquery не должен отличаться. Возможно, стоит опубликовать подпись вашего представления, ссылку на скрипт jquery, подпись контроллера, маршрут и соответствующую строку из build.sbt — возможно, людям будет проще помогать.
4. Я обновил свой пост дополнительным кодом и представлением. Я подозреваю, что произошло столкновение имен с jQuery, потому что существует 2 библиотеки jQuery. Я удаляю его вторым jQuery в
build.sbt libraryDependencies
т.е."org.webjars.bower" % "bootstrap3-dialog" % "1.34.4" exclude("org.webjars.bower", "jquery")
Ответ №1:
Для использования target/web/web-modules/main/webjars/lib
файлов вы можете либо использовать обычный материал Play Static Asset sbt-web, либо вы можете использовать WebJarAssets
thing. Более подробная информация в документах.
Использовать WebJarAssets
вместо:
webJarAssets.locate("jquery.min.js")
Попробуйте:
webJarAssets.locate("jquery", "jquery.min.js")