当 Meteor 中的导出名称发生冲突时会发生什么?

What happens when export names conflict in Meteor?

我在 Meteor 读到过,

If your app uses the email package (and only if it uses the email package!) then your app can see Email and you can call Email.send. Most packages have only one export, but some packages might have two or three (for example, a package that provides several classes that work together).

那么,如果您的应用使用两个导出名为 Email 的变量的包,会发生什么情况?您的应用收到哪个电子邮件? Package.a.Email / Package.b.Email 是唯一的解决方法吗?

这就是 meteor 的命名空间系统的用武之地。两个包中只有一个,通常是最后添加的那个将获得全局 Email 变量。

唯一的解决方法是使用您提到的 Package.a

如果一个包依赖于另一个包,如果在 package.js

中使用 api.use("xxx") 正确引用了相关包,则应该没有问题

如果您使用两个包并导出作为包的依赖项,您将必须使用 Package.xx 命名约定(注意 Meteor 实际上在幕后使用它,如果您不这样做,它实际上会转换您的代码不要使用 Package.xx.

使用全局变量 Email,您必须小心,因为只有一个包会获得全局变量。