【问题标题】:What happens when export names conflict in Meteor?当 Meteor 中的导出名称冲突时会发生什么?
【发布时间】:2015-08-20 18:32:56
【问题描述】:
我在 Meteor 中读到过,
如果您的应用使用电子邮件包(并且仅当它使用电子邮件
包!)然后您的应用程序可以看到电子邮件,您可以调用 Email.send。
大多数包只有一个导出,但有些包可能有两个
或三个(例如,一个提供多个类的包
一起工作)。
如果您的应用程序使用两个导出名为 Email 的变量的包,会发生什么情况?您的应用会收到哪个电子邮件? Package.a.Email / Package.b.Email 是唯一的解决方法吗?
【问题讨论】:
标签:
javascript
node.js
meteor
package
【解决方案1】:
这就是meteor的命名空间系统的用武之地。只有两个包中的一个,通常是最后添加的那个,将获得全局Email变量。
唯一的解决方法是使用您提到的Package.a。
如果一个包依赖于另一个包,那么如果在package.js 中使用api.use("xxx") 正确引用了相关包,则应该没有问题
如果您使用两个带有导出的包作为一个包的依赖项,您将不得不使用Package.xx 命名约定(注意 Meteor 实际上在后台使用它,如果您不使用 @987654326,它实际上会转换您的代码@。
对于全局变量Email,您必须小心,因为只有一个包会获取全局变量。