Модуль 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.

Другие вопросы по тегам