Javascript 我可以访问ES6模块内的全局ES5变量吗?

Javascript 我可以访问ES6模块内的全局ES5变量吗?,javascript,Javascript,我试图在ES6中逐步模块化并重写一个用ES5编写的项目。 有了这些,我就有了在加载ES6模块时使用type=“module”属性的类和变量以及模块的通用脚本 例如: <script src="constants.js"></script> <script src="main.js"></script> <script src="banners.js" type="module"></script> 我的问题如下,我想在

我试图在ES6中逐步模块化并重写一个用ES5编写的项目。 有了这些,我就有了在加载ES6模块时使用type=“module”属性的类和变量以及模块的通用脚本

例如:

<script src="constants.js"></script>
<script src="main.js"></script>
<script src="banners.js" type="module"></script>

我的问题如下,我想在模块“banners.js”中访问文件“constants.js”的常量

起初我认为这是可能的,因为linux chrome和firefox接受在bannars.js模块中调用全局变量,但不幸的是,iPad/iOS11 chrome不接受并指责错误:ReferenceError:找不到变量

不幸的是,我无法将模块中的constants.js文件转换为使用导出/导入语法,因为这些常量用于代码的ES5部分,这些部分还不能转换为ES6模块,如果我将常量转换为ES6模块,则无法读取常量

是否有办法从ES6模块中访问全局范围?或者以其他方式从文件“constants.js”中获取变量

也许这是iOS的chrome错误,Linux版本显示了正确的行为


操作系统之间的这种行为差异确实让我对模块的作用域及其访问全局作用域的能力感到困惑。

它应该可以正常工作,错误在其他地方。将
常量.js
转换为UMD模块,并将其作为
type=“module”包含
在这里,但作为一个普通脚本,它需要作为ES5全局脚本公开。我发现了这个问题。我的constants.js文件中有一些常量是用新的ES6类型“const”和“let”定义的,奇怪的是,iOS chrome无法在模块内部读取,用“const”和“let”定义的全局变量只有在我将所有内容都改为“var”时才起作用。在这种情况下,我仍然无法判断哪个chrome具有正确的行为,是Linux还是iOS。