Require.js ignoring baseUrl

后端 未结 2 1313
孤独总比滥情好
孤独总比滥情好 2021-02-06 09:32

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

相关标签:
2条回答
  • 2021-02-06 10:16

    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) for scripts/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

    0 讨论(0)
  • 2021-02-06 10:23

    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

    0 讨论(0)
提交回复
热议问题