I'm new to RequireJS and trying to download pre-compiled handlebars templates with RequireJS. It loads the rudder pattern and runtime, but the Handlebars runtime was undefined.
Folder structure
www |__index.html |__js |__main.js |__lib | |__jquery-1.10.1.min.js | |__handlebars.runtime-v1.1.2.js | |__require.js |__modules | |__content.js |__templates |__content-tmpl.js //handlebars precompiled template
index.html
<!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="js/lib/require.js" data-main="js/main"></script> </head> <body> <div class="header"></div> <div class="content"></div> </body> </html>
main.js
requirejs.config({ paths:{ jquery:'lib/jquery-1.10.1.min', 'handlebars.runtime':'lib/handlebars.runtime-v1.1.2' } }); requirejs(['modules/content','jquery'],function (content,$) { $(function(){ content.initModule(); }); });
content.js
define(['jquery','../templates/content-tmpl'],function($,template){ return{ initModule:function(){ $('body').append(template()); } } });
content-tmpl.js (compiled Handlebars template)
define(['handlebars.runtime'], function (Handlebars) { //Error raise here. Handlebars is undefined. Handlebars = Handlebars["default"]; var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {}; return templates['content'] = template(function (Handlebars, depth0, helpers, partials, data) { this.compilerInfo = [4, '>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; return "<div>\r\n Hello Handlebars and RequireJS\r\n</div>"; }); });
Console error
TypeError: Cannot read property 'default' of undefined
user2522545
source share