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
Your config is being executed in async mode. When first require
call is founded, your config is not yet applied. According to documentation:
when
require.js
loads it will inject another script tag (with async attribute) forscripts/main.js
So, just execute your config in sync mode:
<script src="/js/vendor/require-jquery.js"></script>
<script src="/js/main.js"></script>
<script>
require(['jquery', 'bootstrap'], function($) {
$(function() {
console.log('hello world!');
});
});
</script>
More info: Patterns for separating config from the main module
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