i'm wanting create "core" package , "module/plugin" packages accounts-facebook uses accounts-base in meteor.
here's have it's not working:
packages/project:modules-core/package.js:
package.describe({ name: 'project:modules-core', summary: 'core package modules.', version: '1.0.0' }); package.onuse(function (api) { api.versionsfrom('meteor@0.9.1.1'); api.addfiles('lib/core.js', ['client', 'server']); if (api.export) { api.export('hbmodule'); } }); packages/project:modules-core/lib/core.js:
hbmodule = (function () { var modulename = ""; var getsharecount = (function (url) { }); var register = (function (name) { hbmodule[name] = name; }); }()); packages/project:facebook/package.js:
package.describe({ name: 'project:facebook', summary: 'facebook module.', version: '1.0.0' }); package.onuse(function(api) { api.versionsfrom('meteor@0.9.1.1'); api.use('project:modules-core', ['client', 'server']); api.imply('project:modules-core', ['client', 'server']); api.addfiles('lib/facebook.js', ['client', 'server']); }); packages/project:facebook/lib/facebook.js:
facebook = (function () { var modulename = "facebook"; var getsharecount = (function (url) { return 22; }); }()); hbmodule.register('facebook'); and i'm getting typeerror: cannot read property 'register' of undefined error.
what doing wrong?
thanks!
the iifes (immediately-invoked function expressions) aren't returning anything, hbmodule , facebook both undefined. when creating hbmodule, need return object register property set register function.
hbmodule = (function () { var modulename = ""; var getsharecount = (function (url) { }); var register = (function (name) { hbmodule[name] = name; }); // return object assigned hbmodule return { register: register }; }()); also iife's unnecessary here, meteor wrap each file anyway, , expose variables use without declaring (such hbmodule); variables declared var scoped file.
packages/project:modules-core/lib/core.js:
hbmodule = {}; var modulename = ''; // assuming want expose getsharecount method well? hbmodule.getsharecount = function (url) { }; hbmodule.register = function (name) { hbmodule[name] = name; }; packages/project:facebook/lib/facebook.js:
facebook = {}; var modulename = 'facebook'; facebook.getsharecount = function (url) { return 22; }; hbmodule.register('facebook');
Comments
Post a Comment