Модуль RequireJS пытается загрузить модуль shim'ed
У меня возникла проблема при попытке создать оболочку RequireJS для некоторого кода JavaScript, который был написан другой командой в моей организации. Скрипт загружается через HTML-скрипт noraml как таковой:
<script src="MyCustomModule.js" type="text/javascript"></script>
Мой main.js содержит следующее:
requirejs.config({
paths: { 'text': 'durandal/amd/text' },
shim: {
'MyCustomModule': { exports: 'My.Custom.Module' }
}
});
И я попытался получить доступ к пользовательскому модулю различными способами, но это мой текущий код:
define(['MyCustomModule'], function (require, MyCustomModule) {
...
}
Но каждый раз, когда страница / приложение загружается, я получаю сообщение об ошибке от RequireJS, указывающее, что оно не удалось загрузить app/MyCustomModule.js
(и я вижу ошибку 404 в консоли, где он пытался запросить файл с сервера). Что я делаю неправильно?
1 ответ
Вы также должны включить MyCustomModule
в paths
:
requirejs.config({
paths: {
'text': 'durandal/amd/text'
'MyCustomModule': 'path/to/MyCustomModule'
},
shim: {
'MyCustomModule': {
exports: 'My.Custom.Module'
}
}
});
Если ты этого не сделаешь, define(['MyCustomModule'] (...)
будет искать зависимость в baseUrl
местоположение, в вашем случае: app/MyCustomModule
,
Другими словами: shim
не может "подобрать" глобальные переменные, которые не загружены RequireJS.