我见过一些与此类似的问题,但似乎没有一个适用于我的情况。
我正在创建一个 Meteor 项目并使用 Atmosphere 包“anti:fake”来生成测试数据。
对于任何其他包,我必须import
它。即使是 Meteor 本身,我也必须执行 import {Meteor} from 'meteor/meteor';
。对于其他类似的 Atmosphere 包,例如 publish-counts
,我还必须写一行 import {Counts} from 'meteor/tmeasday:publish-counts';
。 ...此外,即使我想导入 anti:fake
,我也看不到可以正常工作的导入名称。它们在 packages
文件中以相同的方式列出,并以相同的方式添加到我的项目中,因此从表面上看,它们看起来都一样。
这些都不重要,因为我可以神奇地使用一个名为 Fake
的对象,但我真的不明白为什么会这样,也不知道将来我需要什么显式导入和隐式导入。
谢谢!
最佳答案
Meteor 1.3 引入了 ES2015 模块,但是为了保持向后兼容性,Meteor 仍然保留了“预加载”行为,即为您导入 anti:fake
包,将其绑定(bind)到全局变量 假的
。
import {Meteor} from 'meteor/meteor'
出于同样的原因实际上并不需要,但强烈推荐作为最佳实践(如果 future 的版本通过删除急切加载)。
如果您寻找针对 Meteor 1.3 或更新版本的较新教程,您会看到大部分代码都放在 /imports
目录中,因为 Meteor 构建工具对此的处理方式不同,并且所有其中的代码不是“急切加载”的。此目录中的所有代码都必须显式导入,连同模块命名空间和避免旧的文件加载顺序问题,让您更清楚地了解应用程序中正在运行的代码(减少魔法!)。
Meteor 1.3 还包括对 NPM 包的支持,它们为您提供了使用大气包的替代方法,并且以这种方式包含的包也需要明确导入到您的应用程序中。
您可以考虑使用 https://www.npmjs.com/package/faker .
但是,如果某些东西对您有用,您就不必觉得必须进行更改,但希望这可以帮助您理解它为何起作用!
您确定 publish-counts
需要导入语句吗?看着 package.js
对于这个包显示这两行
api.export('Counts');
api.export('publishCount', 'server');
这使得 publishCount
对象在导入此包的应用程序(或包)的服务器上可用,并且 Counts
对象在客户端和服务器上都可用。不需要 import 语句(因为它们被放置在全局命名空间中)
有关详细信息,请参阅 Migrating to Meteor 1.3文档
关于javascript - 为什么我不必将 `import` `anti:fake` 放入我的 Meteor 源文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39604047/