Accepted answer

I had the exact same problem and I was struggling around many hours until I saw your entry here. Then I started over from scratch and now it works for me at least.

      handlebars: 'vendor/handlebars',
      text: 'vendor/require-text',
      highcharts: 'vendor/highcharts'

    shim: {
      backbone: {
        deps: ['underscore', 'jquery'],
        exports: 'Backbone'
      underscore: {
        exports: '_'
      highcharts: {
        exports: 'Highcharts'

Since I use Chaplin on top of Backbone, I am including some more files in my paths attribute. Highcharts has a similar structure to Backbone so I thought I could load it the same way. It works for me now. As you can see, I am introducing highcharts in the paths attribute already to export it as a shim afterwords.

Maybe this helps, otherwise let's try to contribute on it even more to solve your problem.


Although jQuery can be used as an AMD module it will still export itself to the window anyway so any scripts depending on the global jQuery or $ will still work as long as jQuery has loaded first.

Have you tried setting a path? jQuery is an interesting one because although you're encoruaged not to name your modules by the RequireJS documentation, jQuery actually does.

From the jQuery source

if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
    define( "jquery", [], function () { return jQuery; } );

What that means is you will need to tell RequireJS where to find 'jquery'. So:

    paths: {
        'jquery': 'path/to/jquery'

If you're interested in why jQuery registers itself this way then there is a pretty large comment in the source which goes into more detail

Related Query

More Query from same tag