我已经看到了一些类似的问题,但似乎没有一个适用于我的情况。
我正在创建一个Meteor项目并使用Atmosphere软件包&anti:fake:fake'生成测试数据。
对于任何其他套餐,我必须import
。即使是流星本身,我也必须做import {Meteor} from 'meteor/meteor';
。对于其他类似的Atmosphere软件包,例如publish-counts
,我还必须编写类似import {Counts} from 'meteor/tmeasday:publish-counts';
的行。 ...此外,即使我想导入anti:fake
,我也看不到没有错误的导入名称。它们在packages
文件中以相同的方式列出,并以相同的方式添加到我的项目中,因此,从表面上看,它们看起来都是一样的。
这一切都不重要,因为我可以神奇地使用一个名为Fake
的对象,但我真的不明白为什么会这样,以及我将来如何知道我是什么需要明确导入以及隐式导入的内容。
谢谢!
答案 0 :(得分:2)
Meteor 1.3推出了ES2015模块,但是为了保持向后兼容性,Meteor仍然保留着“热切”的负载。导入anti:fake
包的行为,将其绑定到全局变量Fake
。
import {Meteor} from 'meteor/meteor'
实际上并不是必需的,但强烈建议将其作为最佳实践(如果将来的版本通过删除急切的加载来降低此向后兼容性,则可能会成为必要)。
如果您寻找针对Meteor 1.3或更新版本的较新教程,您将看到大多数代码都放在/imports
目录中,因为Meteor构建工具对此进行了不同的处理,其中的所有代码均为不要急于加载#39;必须显式导入此目录中的所有代码,这些代码与模块命名空间一起避免旧的文件加载顺序问题,使您更清楚地了解应用程序中运行的代码(不那么神奇!)。
Meteor 1.3中还包括对NPM软件包的支持,它们为您提供了使用大气包的替代方案,并且这种方式包含的软件包也需要明确导入您的应用程序。
您可以考虑使用https://www.npmjs.com/package/faker。
但是,如果某些内容对您有用,请不要改变,但希望这有助于您了解它的工作原理!
您确定publish-counts
是否需要import语句?查看此包的package.js
显示了这两行
api.export('Counts');
api.export('publishCount', 'server');
这使得导入此包的应用程序(或包)中的服务器上的publishCount
对象可用,并且客户端和服务器上的Counts
对象都可用。不需要import语句(因为它们放在全局命名空间中)
有关详情,请参阅Migrating to Meteor 1.3 doc