ES6模块:为什么先前导出的模块不被“子”模块所知?

我正在尝试为我的Meteor / Node应用程序构build一个基于模块的体系结构。

我有一个client/main.js导入一个imports/module1/index.js

imports/module1/index.js在导入组件imports/module1/component/component1.js后,导入一个imports/module1/component/component1.js imports/module1/api/api.js

总结起来,简化的树就像这样

 .client/main.js |_imports/module1/index.js |_imports/module1/api/api.js |_imports/module1/component/component1.js 

api.js文件如下所示:

 export default { myFunction1 (arg1, arg2) { // function stuff }, myFunction2 (arg1, arg2) { // function stuff }, } 

我希望能够在imports/module1/component/component1.js调用myFunction1(ar1,arg2) ,但不起作用。 我错过了什么?

目前,您不会在component1.js文件中导入api.js ,因此component1无法访问api中定义的任何函数。

文件的范围不会“泄漏”,因此每个文件在这个问题上是完全分开的。 在main.js文件中import不会自动使所有导入的模块可用于其子模块 – 这是没有道理的。 你必须导入一些东西才能使用它。