Reputation: 1350
recent days I study meteor js framework , i want to write a package for meteor, but when i try a package, i have a problem about template
in my package.js
api.use([
'templating',
"coffeescript",
], "client");
api.addFiles([
'client/breadcrumb.coffee',
'client/helpers.coffee',
'client/views/breadcrumb/crumb.html'
], 'client');
api.use(['coffeescript'], 'server');
api.addFiles('server/breadcrumb.coffee', 'server');
in my helper.coffee i use snippet code like this:
Template.breadcrumbs.helpers ->
crumbs: () ->
Breadcrumb.getCrumbs()
And when I include my package on my app it not working. This is errors:
Uncaught ReferenceError: Template is not defined helpers.coffee:1
Uncaught TypeError: Cannot read property 'Breadcrumb' of undefined global-imports.js:13
Uncaught ReferenceError: Template is not defined template.dashboard_category.js:2
Uncaught ReferenceError: Template is not defined template.dashboard_contact.js:2
Uncaught ReferenceError: Template is not defined template.dashboard_contact_detail.js:2
Uncaught ReferenceError: Template is not defined template.dashboard_post.js:2
Uncaught ReferenceError: Template is not defined template.dashboard_post_form.js:2
Uncaught ReferenceError: Template is not defined template.dashboard_user.js:2
Uncaught ReferenceError: Template is not defined template.about.js:2
Uncaught ReferenceError: Template is not defined template.contact.js:2
Uncaught ReferenceError: Template is not defined template.dashboard.js:2
Uncaught ReferenceError: Template is not defined template.home.js:2
Uncaught ReferenceError: Template is not defined template.dashboard.js:2
Uncaught ReferenceError: Template is not defined template.layout.js:2
Uncaught ReferenceError: Template is not defined template.404.js:2
Uncaught ReferenceError: Template is not defined template.dashboard_breadcrumb.js:2
Uncaught ReferenceError: Template is not defined template.dashboard_header.js:2
Uncaught ReferenceError: Template is not defined template.dashboard_slidebar.js:2
Uncaught ReferenceError: Template is not defined template.flash.js:2
Uncaught ReferenceError: Template is not defined template.footer.js:2
Uncaught ReferenceError: Template is not defined template.header.js:2
Uncaught ReferenceError: Template is not defined template.loading.js:2
Uncaught ReferenceError: Deps is not defined dashboard_category.coffee.js:2
Uncaught ReferenceError: Deps is not defined dashboard_contact.coffee.js:2
Uncaught ReferenceError: Deps is not defined dashboard_post.coffee.js:2
Uncaught ReferenceError: Meteor is not defined dashboard_user.coffee.js:2
Uncaught ReferenceError: Template is not defined dashboard.coffee.js:2
Uncaught ReferenceError: Meteor is not defined client.coffee.js:2
Uncaught ReferenceError: Meteor is not defined collections.js:3
Uncaught ReferenceError: SimpleSchema is not defined schema.js:6
Error: Spacebars is not defined
ReferenceError: Spacebars is not defined
at null._render (http://localhost:3000/packages/accounts-ui-unstyled.js?724142103f86896bf7ab0a57672b34086f989b24:634:12)
at doRender (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1853:25)
at http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1795:16
at Object.Blaze._withCurrentView (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:2029:12)
at viewAutorun (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1794:18)
at Tracker.Computation._compute (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36)
at new Tracker.Computation (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:206:10)
at Object.Tracker.autorun (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:476:11)
at Blaze.View.autorun (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1793:19)
at http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1847:10
> Before: 630ms (diff: 630ms)
at http://localhost:3000/packages/meteor.js?012a26290d9cb731a3b52b396e571c8159d11236:738:12
at http://localhost:3000/packages/meteor.js?012a26290d9cb731a3b52b396e571c8159d11236:774:4
at http://localhost:3000/packages/meteor.js?012a26290d9cb731a3b52b396e571c8159d11236:1022:3
> Before: 676ms (diff: 46ms)
at Array.forEach (native) reporters.js?1413185929295:67
Error: Exception in defer callback:
ReferenceError: Spacebars is not defined
at null._render (http://localhost:3000/packages/iron_layout.js?080dc95e770e3130757bf6af69fd0abb99573ae4:95:10)
at doRender (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1853:25)
at http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1795:16
at Object.Blaze._withCurrentView (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:2029:12)
at viewAutorun (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1794:18)
at Tracker.Computation._compute (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36)
at new Tracker.Computation (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:206:10)
at Object.Tracker.autorun (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:476:11)
at Blaze.View.autorun (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1793:19)
at http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1847:10
> Before: 657ms (diff: 657ms)
at usePostMessage (http://localhost:3000/packages/meteor.js?012a26290d9cb731a3b52b396e571c8159d11236:376:12)
at http://localhost:3000/packages/meteor.js?012a26290d9cb731a3b52b396e571c8159d11236:405:3
at http://localhost:3000/packages/meteor.js?012a26290d9cb731a3b52b396e571c8159d11236:410:4
at http://localhost:3000/packages/meteor.js?012a26290d9cb731a3b52b396e571c8159d11236:1022:3
Upvotes: 1
Views: 808
Reputation: 22696
This is simply a load order issue : Meteor requires that a template has to be declared in Spacebars before you can reference it to define its helpers in JS.
By stating in the package source files listing that you want the Spacebars HTML to load BEFORE the JS counterpart, your error should disappear.
api.addFiles([
'client/views/breadcrumb/crumb.html',
'client/helpers.coffee',
'client/breadcrumb.coffee'
], 'client');
Upvotes: 2