2013-02-19 3 views
2

Это случилось со мной во время игры! , но я думаю, что это может произойти обычно при использовании RequireJS.Зачем requireJS усекает '.js' от имени основного модуля и не может найти файл после этого?

В т он шаблон я использовал заявление:

<script>require = { 
     // The path where your JavaScripts are located 
     baseUrl: "assets/js/", 
    ... 
};</script> 
@helper.requireJs(core = routes.Assets.at("js/require-jquery.js").url, module = routes.Assets.at("js/main.js").url) 

Что компилируется:

<script> require = ... </script> 
<script type="text/javascript" data-main="/assets/js/main.js" src="/assets/js/require-jquery.js"></script> 

Когда я ударил перезагрузки в Разглядеть я вижу следующие ошибки в консоли:

GET http://localhost:9000/assets/js/main?bust=1361232944505 404 (Not Found) require-jquery.js:1843 
Uncaught Error: Script error 
http://requirejs.org/docs/errors.html#scripterror 

Как вы можете увидеть файл запрашиваемого имеет расширение .js Trun лаборант. Зачем? Как этого избежать?

ответ

1

Проблема заключается в том, что config RequireJS содержит поле baseUrl, и тот же путь повторяется в атрибуте data-main тега script. Изменение игры! рамочная помощник заявление:

@helper.requireJs(core = routes.Assets.at("js/require-jquery.js").url, module = "main") 

или в общем случае:

<script type="text/javascript" data-main="main" src="/assets/js/require-jquery.js"></script> 

устраняет эту проблему.

Почему это происходит и проявляется, что смутный путь является вопросом для разработчиков RequireJS. В любом случае, игра! образец рамки, описанный в документации here или here, должен быть скорректирован, а также должен быть обновлен номер common errors section on the RequireJS page.