我需要创建由多个流星智能包组成并共享相同命名空间的功能或模块。问题是,如果我 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 = {}));
然后再次出现同样的问题,链接器两次声明变量,使导入的变量无用。
这可能是故意的还是错误的任何原因?或者我应该如何解决这种情况。
现在我已经修改了流星代码以不声明包范围变量,如果它已经被声明为导入变量。