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