ele
ele

Reputation: 6181

TypeError applying precompiled Handlebars templates with a context

Pardon the noob question but I simply can't get precompiled Handlebars templates to do anything but barf out

TypeError: 'undefined' is not a function (evaluating 'templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data)')

each time I apply a context to a (precompiled) template.

Given the following files and contents:

Calling compiledTemplate() throws that error above no matter what I do--yet I'm able to get client-side templates to compile and display just fine. All the walkthroughs and tutorials I've seen skip through this like its obvious so I must be missing something silly. Any ideas?

Upvotes: 22

Views: 8282

Answers (2)

Tim
Tim

Reputation: 6441

The problem for me is that currently (June 2014), the 2.0 release on GitHub is marked alpha https://github.com/wycats/handlebars.js/releases.

If I install handlebars via bower, it selects the latest stable release. v1.3.0.

npm install handlebars, however, installs the ~2.0.0-alpha.4 version.

Solution: update the version in bower.json to ~2.0.*, and run bower update.

Upvotes: 3

biomorgoth
biomorgoth

Reputation: 630

Be sure to match the versions of the Handlebars server and client packages. A way to check the version of the compiled template is the following:

handlebars a_template_of_yours.handlebars | grep "compilerInfo"

It should output something like this:

this.compilerInfo = [4,'>= 1.0.0'];

The first value is the Compiler Revision, which should match the output of the following code on your browser:

Handlebars.COMPILER_REVISION

If you used npm to download your Handlebars compiler, specify the version which you need. Here is an example for handlebars.runtime-v1.3.0.js:

npm install [email protected] -g

Upvotes: 27

Related Questions