Не удается найти WebJarAssets jQuery.min.js

#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")