RequireJS docs говорят, что для поддержки более старых версий IE вам необходимо настроить enforceDefine: true
.
Итак, если вы хотите поддерживать Internet Explorer, ломать ошибки загрузки и иметь модульный код либо через прямые вызовы define(), либо в конфигурацию shim, всегда устанавливайте принудительное соответствие для true. См. Следующий раздел для примера.
ПРИМЕЧАНИЕ. Если вы установите для параметра enforceDefine: true и используете data-main = "" для загрузки основного JS-модуля, то этот основной JS-модуль должен вызывать define() вместо require() для загрузки необходимого ему кода, Основной JS-модуль может по-прежнему вызывать require/requirejs для установки значений конфигурации, но для загрузки модулей он должен использовать define().
Так как Twitter Bootstrap не является модулем AMD, мне нужно закрепить его, чтобы он работал. Вот как я его настраиваю:
<script type="text/javascript">
var require = {
paths: {
"bootstrap": "../bootstrap",
"jquery": "../jquery-1.8.2"
},
shim: {
"bootstrap": ["jquery"]
},
enforceDefine: true
};
</script>
Позже, когда мой модуль хочет загрузочную загрузку в качестве зависимости, я все равно получаю сообщение об ошибке:
Error: No define call for bootstrap
http://requirejs.org/docs/errors.html#nodefine
Если я правильно понял документы, enforceDefine
должен игнорировать прокладки, но это не так.
Что я здесь делаю неправильно?