1

我正在尝试让 requirejs 和 webjars 工作,但它们似乎在 play 2.3.7 中不起作用

路线:

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

构建.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 data-main)

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

我收到错误“未捕获的 TypeError:对象不是函数”

另外,我尝试在主 js 中使用定义。然后它无法找到依赖项,它正在与 main js 相同的文件夹中寻找库。

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

是 requirejs + webjars 集成完全坏了还是我在胡说八道?请帮忙

4

1 回答 1

1

WebJars Play2 Activator Template包含所有这些东西。所以你应该比较你拥有的东西和里面的东西。

我认为这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

于 2014-12-23T19:28:41.900 回答