2.2로 업그레이드 한 후 이전처럼 requirejs 작업을 수행 할 수 없습니다.play 2.2 webjars requirejs jquery integration
requirejs가 올바르게 초기화되지 않았거나 올바르게 구성되지 않은 것 같습니다. 나는 https://github.com/mariussoutier/play-angular-require-seed을 따르려고했지만, 심지어 가장 단순한 경우를 작동시킬 수도 없습니다.
jquery는 main.js에서 올바르게 찾을 수 있지만 require ([ 'jquery'] .....)는 태그에서 작동하지 않습니다.
누군가 나를 도와 줄 수 있다면 많은 도움이 될 것입니다.
webjars 정의
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
"org.webjars" % "jquery" % "1.10.2",
"org.webjars" % "requirejs" % "2.1.1",
"org.webjars" % "webjars-play_2.10" % "2.2.0"
)
resolvers += "typesafe" at "http://repo.typesafe.com/typesafe/repo"
requireJs += "main.js"
requireJsShim += "main.js"
main.js
(function(requirejs) {
"use strict";
// -- PROD RequireJS config --
requirejs.config({
shim: {
"jquery": { exports: "$" }
},
paths: {
"jquery": ["/webjars/jquery/1.10.2/jquery.min"]
}
});
// It works fine here
require(["jquery"], function($) {
console.log($);
});
})(requirejs);
index.scala.html
@(title: String)
<html>
<body>
<script src='/lib/require.js' type='text/javascript' data-main="/assets/javascripts/main"></script>
<script type="text/javascript">
require(["jquery"], function($) {
console.log($);
});
</script>
</body>
</html>
main.js로드하고, 콘솔에 에러 메시지가있다
Uncaught TypeError: Property 'require' of object [object Object] is not a function
여기서 핵심은 AMD 개념을 이해하는 것입니다. 태그에있는 두 개의 스 니펫이 차례로 배치되지만 순서대로 실행되는 것은 아닙니다. 따라서 두 번째 코드 단편이 실행되면 requirejs가 아직 구성되지 않을 수 있습니다.
- 는 (데이터 주에 지정) main.js에서 두 번째 조각의 자바 스크립트 코드를 포함하고 사용이 ([ '의존성'이 필요합니다
우리가 두 개의 서로 다른 접근 방식을 가지고이 문제를 해결하려면 ], function() {// do second.js}<script src='webjars/requirejs/2.1.8/require.js' type='text/javascript' data-main="javascripts/main"></script> <script type='text/javascript'> // Second snippet require(['jquery'], function($) {return $;}); </script>
- requirejs를 포함 할 때 data-main 필드를 지정하지 말고 두 번째 부분에서 모든 구성을 수행하십시오.
IMHO는 첫 번째 방법은 index.scala.html에서 ...
을 선호 확실히 내 대답을 예선 샘플 프로젝트 https://github.com/mariussoutier/play-angular-require-seed
주셔서 감사합니다 해명에 대한 많은. require ([ 'jquery'], ...)의 모든 종속성은 data-main을 지정하여로드 된 다음 두 번째