Моя программа запускается через эту точку входа в шаблоне веточки:
<script data-main="{{ asset('bundles/wwwcms/js/app') }}" src="{{ asset('bundles/wwwcms/js/require.js') }}"></script>
Это выводит:
<script data-main="static.correct_require_url.net/js/app" src="static.correct_require_url/require.js"></script>
Все работает нормально, поэтому require выполняет мой app.js (config):
requirejs.config({
'baseUrl': 'js/lib',
'paths': {
'app': '../app',
'jquery': '//code.jquery.com/jquery-1.10.2.min',
'bootstrap': '//netdna.bootstrapcdn.com/bootstrap/3.0.2/js/bootstrap.min'
},
'shim': {
'bootstrap': {
deps: ['jquery']
}
}
});
// always require jquery and bootstrap onload
requirejs(['bootstrap']);
Что тоже работает.
Структура каталогов следующая:
app.js
require.js
/ lib
- test.js
/ app
- dirty.js
- import.js
Хорошо, вот где возникает ошибка
Допустим, для страницы я хочу загрузить dirty.js и import.js. dirty.js зависит от jquery, а import.js зависит от test.js (то, что я только что придумал для демонстрационных целей).
Итак, я загружаю зависимости на страницу следующим образом:
<script type="text/javascript">
require(['app/dirty', 'app/import']);
</script>
Когда страница загружается, dirty.js и import.js загружаются нормально, с правильного URL-адреса относительно "app". Однако зависимость для import.js (test.js) не загружается правильно.
Вот как запускается import.js:
require(['jquery', 'test'], function($, test) {
...
});
Как видите, он запрашивает lib / test.js. Он извлекает jQuery из CDN, так что об этом позаботились. Но для test.js используется неправильный путь.
import.js (и все остальные модули, загруженные первыми) загружаются с использованием правильного статического URL-адреса, но зависимости для модулей загружаются с использованием неправильного пути - они загружаются с использованием URL-адреса этой страницы!
Поэтому, когда я смотрю на вкладку сети в консоли отладчика, import.js происходит из:
static.blahblah.com/js/app/import.js.
но test.js происходит от:
blahblah.com/route/to/current/page/js/app/test.js
(который, очевидно, каждый раз 404-й)
Каковы возможные причины этого? Я делаю что-то неправильно? Любая помощь будет принята с благодарностью.
Вот как выглядят теги скрипта перед запуском:
<script data-main="//static.bananajams.cloud.net/bundles/wwwcms/js/app" src="//static.bananajams.cloud.net/bundles/wwwcms/js/require.js"></script>
<script type="text/javascript">
require(['app/dirty', 'app/preview', 'app/import']);
</script>
define()
для своих модулей? - person Amy   schedule 24.04.2014