Play 2.3 Webjars - поддержка requirejs по умолчанию - Как написать определение или требование

Я пытаюсь заставить работать requirejs и webjars, но они, похоже, не работают в игре 2.3.7.

маршруты:

GET      /vassets/*file     controllers.Assets.versioned(path="/public", file)
GET      /webjars/*file     controllers.WebJarAssets.at(file)

build.sbt

  "org.webjars" %% "webjars-play" % "2.3.0-2",
    "org.webjars" % "jquery" % "2.1.3"

HTML-шаблон

<script>
    @Html(org.webjars.RequireJS.getSetupJavaScript(routes.WebJarAssets.at("").url))
</script>
<script data-main="@routes.Assets.versioned("js/koapp/js_init")"
  src="@routes.WebJarAssets.at(WebJarAssets.locate("require.min.js"))"></script>
</head>

js_init.js (основной файл данных require.js)

function test(){
  return console.log('test');
}
require("jquery",test);

Я получаю сообщение об ошибке "Uncaught TypeError: object is not a function"

Кроме того, я попытался использовать определение внутри основного js. Затем он не может найти зависимости, он ищет библиотеки в той же папке, что и основной js.

   define([ 'knockout'],
        function(ko) {
  console.log('hello world')       
});

Интеграция requirejs + webjars полностью нарушена или я делаю что-то глупое? пожалуйста помоги


person vumaasha    schedule 23.12.2014    source источник
comment
Какая строка какого файла выдает эту ошибку?   -  person James Ward    schedule 23.12.2014
comment
js_init.js, основная база данных requirejs. Код, который у меня есть в этом файле, представляет собой просто функцию, за которой следует вызов require, как показано выше.   -  person vumaasha    schedule 23.12.2014


Ответы (1)


Все это работает в шаблоне активации WebJars Play2. Так что сравните то, что у вас есть, с тем, что есть внутри.

Я думаю, что data-main="@routes.Assets.versioned("js/koapp/js_init")" должно включать расширение .js, например: data-main="@routes.Assets.versioned("js/koapp/js_init.js")".

Кроме того, маршрут /vassets должен быть:

GET        /vassets/*file    controllers.Assets.versioned(path="/public", file: Asset)

Обратите внимание на тип Asset в параметре file.

person James Ward    schedule 23.12.2014
comment
Привет, теперь, если я вызову требование внутри основного файла js. он работает, однако определить не работает. Вызов define выдает ошибку в require.min.js, говорит Uncaught Error: Script error for: Knockout. Я обновил код, который использовал для определения в вопросе - person vumaasha; 23.12.2014
comment
Я думаю, мне нужно переопределить конфигурацию requirejs, верно? можно ли просто добавить мои пользовательские модули в сгенерированную конфигурацию? - person vumaasha; 23.12.2014
comment
Ознакомьтесь с документами WebJar, чтобы узнать, как переопределить конфигурацию RequireJS. - person James Ward; 23.12.2014
comment
Спасибо. Отправил вам PR в github, чтобы включить webjars-requirejs для нокаута - person vumaasha; 24.12.2014