Events MeteorJS包:访问;事件“;及;“助手”;包内模板的定义(内部)

Events MeteorJS包:访问;事件“;及;“助手”;包内模板的定义(内部),events,meteor,package,Events,Meteor,Package,我创建了一个本地包并添加到我的项目中,还添加了模板 package.js `Package.onUse(function(api) { api.versionsFrom('1.4.2.3'); api.use('templating', 'client'); api.addFiles('server/main.js', 'server'); api.addFiles('client/main.js', 'client'); api.addFiles('client/main.

我创建了一个本地包并添加到我的项目中,还添加了模板

package.js

`Package.onUse(function(api) {
  api.versionsFrom('1.4.2.3');
  api.use('templating', 'client');
  api.addFiles('server/main.js', 'server');
  api.addFiles('client/main.js', 'client');
  api.addFiles('client/main.html', 'client');
  api.mainModule('pkgName.js');
});`
我在client/main.html中创建了一个模板

<template name="myTemplate">
    <button>Test</button>
</template>
但是,当我运行应用程序时-会出现控制台错误

Uncaught TypeError: Cannot read property 'events' of undefined

好的-经过几个小时的研究,似乎Package.onUse函数必须按加载顺序列出依赖项

我认为加载顺序只与主应用程序中的“packages”文件相关,但似乎您也需要按顺序加载依赖项

所以这就解决了---

Uncaught TypeError: Cannot read property 'events' of undefined
Package.onUse(function(api) {
  api.versionsFrom('1.4.2.3');
  api.addFiles('client/main.html', 'client');  

// I moved the html file above the javascript - so the DOM loads first and then the template exists for the event listener to listen to. 

  api.use('templating', 'client');
  api.addFiles('server/main.js', 'server');
  api.addFiles('client/main.js', 'client');
  api.mainModule('pkgName.js');
});