Изискване JS да не се зарежда, ако не е в основния път

Имам проблем с моята настройка на requirejs, опитах се да го поправя, но всеки път разбивам приложението. Ето моето index.html

<script type="text/javascript" src="/js/bower_components/requirejs/require.js"></script>
<script>
    // obtain requirejs config
    require(['require', 'js/require-config'], function (require, config) {

        // update global require config
        window.require.config(config);

        // load app
        require(['main']);
    });
</script>

Това работи добре, ако заредя приложението от главния път "/", но веднага щом се опитам да опресня приложението някъде другаде (т.е. /user/1), получавам следната грешка:

Ресурс, интерпретиран като скрипт, но прехвърлен с MIME тип text/html: "http://domain.local/users/js/require-config.js".

require.js:1895 Uncaught SyntaxError: Неочакван токен ‹

require-config.js:1 Ресурс, интерпретиран като скрипт, но прехвърлен с MIME тип text/html: "http://domain.local/users/main.js".

require.js:1895 Uncaught SyntaxError: Неочакван токен ‹

както можете да видите, той търси файла на относителния път: http://domain.local/users/js/require-config.js

но трябва да се зареди: http://domain.local/js/require-config.js

ако добавя / пред модула, той вече не работи, защото търси файл вместо модул:

<script type="text/javascript" src="/js/bower_components/requirejs/require.js"></script>
<script>
    // obtain requirejs config
    require(['require', '/js/require-config'], function (require, config) {

        // update global require config
        window.require.config(config);

        // load app
        require(['/js/main']);
    });
</script>

Ресурс, интерпретиран като скрипт, но прехвърлен с MIME тип text/html: "http://domain.local/js/require-config". require.js:1895

Uncaught SyntaxError: Неочакван токен ‹ require-config:1 Ресурс, интерпретиран като скрипт, но прехвърлен с MIME тип text/html:

"http://domain.local/js/main". require.js:1895 Uncaught SyntaxError: Неочакван токен ‹

Опитах няколко комбинации, но всеки път нещо се поврежда :(

Помощта ще бъде високо оценена ;)


person maxwell2022    schedule 03.07.2014    source източник


Отговори (2)


Ако пътят ви започва с "/", добавете разширение .js.

<script type="text/javascript" src="/js/bower_components/requirejs/require.js"></script>
<script>
    // obtain requirejs config
    require(['require', '/js/require-config.js'], function (require, config) {

        // update global require config
        window.require.config(config);

        // load app
        require(['/js/main.js']);
    });
</script>

Предпочитайте да използвате тази част:

index.html :

<script data-main="/js/require.file.js" src="/js/bower_components/requirejs/require.js"></script>

require.file.js:

require.config({ // Your config :
    baseUrl: "/js"
});
require(["main"],
    function(someModule, myModule) {
        //onload.
    }
);

Вижте повече: Опции за конфигуриране

person A-312    schedule 08.07.2014

Имах подобен проблем. Просто проверете дали не питате за файлове с разширение като това:

require.config({
    paths: {
        jqueryui: 'js/vendor/jquery.ui.widget.js'
    }
})

Просто премахнете частта .js от името на файла:

require.config({
    paths: {
        jqueryui: 'js/vendor/jquery.ui.widget'
    }
})

Защо възникна проблемът? Тъй като рамката, която използвах в моя бекенд, обслужваше свои собствени 404 страници, така че вместо да имам 404 отговор от услугата, винаги съм виждал напълно генерираната, валидна HTML страница.

person Kamil Szymański    schedule 11.08.2015