我需要创建由多个流星智能包组成的功能或模块,并共享相同的命名空间。问题是,如果我api.export所有package.js文件中的命名空间,那么链接器会创建一个结果:
/* Imports */
var Meteor = Package.meteor.Meteor;
var MyModule = Package['mymodule-base'].MyModule;
/* Package-scope variables */
var MyModule;
因此它覆盖了MyModule变量,使旧范围在其他模块包中不可用。如果我只在一个包中导出变量那么它很好,但是一旦我尝试将该变量的赋值包含在代码中,就像:
(function (MyModule) {
MyModule.SomeFeature = ...
})(MyModule || (MyModule = {}));
然后再次出现同样的问题,链接器声明变量两次,导致导入的变量无用。
为什么这可能是有意的还是一个错误?或者我该如何解决这种情况。
现在我修改了流星代码,如果它已经被声明为导入变量,则不会声明包范围变量。