Babel.js 无法在旧的Web托管平台上使用MJS文件

mkh04yzy  于 11个月前  发布在  Babel
关注(0)|答案(1)|浏览(146)

我目前正在将一个网站从一个新的平台迁移到一个非常旧的平台。旧的平台目前不提供MJS文件作为预期的“application/JavaScript”/“application/x-javascript”,而是将它们作为“application/octet-stream”或其他无效的MIME类型。我可以在我的nginx和Apache配置中本地更改这一点,但当推到生产,我将无法访问这些配置与我们的托管提供商。因此,我正在寻找一个简单的解决方案,将多个MJS文件转换为一个兼容的CJS文件(或多个CJS文件),通过标准的<script>标签在网站上使用。
我尝试过通过Webpack + Babel将现有的MJS代码集转译到一个兼容ES 5的bundle中,但这只导致了一些模糊的错误;可能是由于糟糕的项目设置。此外,我试图通过<module>/<script type="module">标记内联其中的一些脚本,但最终放弃了这一点,因为有多个非常大的模块,它们都依赖于彼此的名称。
现在,我们的初始MJS文件在页面底部导入,如下所示:<script type="module" src="/scripts/script.44EUR4D5.mjs"></script>
每个依赖脚本都将按名称加载彼此,并访问导出的函数或修改DOM。
我希望能够用这样的东西来替换它:<script src="/scripts/bundle.js"></script>
其中bundle.js是MJS文件的一个可能捆绑的版本,大多数处理我们应用程序托管的Web服务器都支持该版本。
如果解决这个问题的正确解决方案是使用一个具有专门设置的二级项目(根据我之前在Webpack + Babel上的说明),那么会有人碰巧知道将MJS文件转换为兼容CJS的简单配置吗?
谢谢你,谢谢

8yoxcaq7

8yoxcaq71#

请记住,浏览器只关心内容类型,它们根本不关心URL中看起来像文件扩展名的部分。
没有必要捆绑文件,或将它们转换为CJS(浏览器支持)。
只需将文件重命名为.js文件扩展名。更新您的import语句以匹配。
您可以使用任何批量重命名工具和正则表达式搜索和替换IDE中的所有源文件来自动执行此操作。

相关问题