Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Require.js ignoring baseUrl

OK this is driving me crazy so maybe someone can point me in the right direction...

I'm using the latest require.js combined with jquery as my module loader. I am using the data-main attribute to point to a config file with a baseUrl. When I try to load a module the baseUrl is ignored and require is attempting to load from the same location as main.js.

/js/main.js

require.config({
    baseUrl: '/js/vendor/'
});

/path/to/page.html

<script data-main="/js/main" src="/js/vendor/require-jquery.js"></script>
<script>
require(['jquery', 'bootstrap'], function($) {
    $(function() {
        console.log('hello world!');
    });
});
</script>

Expected:

Loads http://localhost:3000/js/vendor/bootstrap.js and logs hello world!

Actual:

Attempts to loadhttp://localhost:3000/js/bootstrap.js -- Fails :'(

I've tried using relative paths instead of absolute paths for both data-main and src in the require script tag. Nothing I do seems to trigger the baseUrl. Am I totally missing something in the docs?

like image 529
robdodson Avatar asked Sep 24 '12 23:09

robdodson


1 Answers

the trouble is that require.js load script asynchronously (that's the point behind requirejs), so when you add the require() into a script tag right after you load require, this script execute before js/main.js get loaded.

The easy way would be to include all this in main.js, or create a new file to hold this piece and load it from js/main

/js/main.js

require.config({
    baseUrl: '/js/vendor/'
});

require(['jquery', 'bootstrap'], function($) {
    $(function() {
        console.log('hello world!');
    });
});

-- OR --

/js/main.js

require.config({
    baseUrl: '/js/vendor/',
    deps: ['../boostrap']
});

/js/boostrap.js

define(['jquery', 'bootstrap'], function($) {
    $(function() {
        console.log('hello world!');
    });
});

note require() became a define() in the bootstrap file

like image 118
Simon Boudrias Avatar answered Sep 19 '22 03:09

Simon Boudrias