无法在较旧的网络托管平台上使用 MJS 文件

问题描述 投票:0回答:1

我目前正在将网站从新平台迁移到非常旧的平台。旧平台当前不将 MJS 文件作为预期的“application/javascript”/“application/x-javascript”提供服务,而是将它们作为“application/octet-stream”或其他无效 MIME 类型提供服务。我可以在 nginx 和 Apache 配置中本地更改此设置,但在推送到生产环境时,我将无法通过我们的托管提供商访问这些配置。因此,我正在寻找一种简单的解决方案,用于将多个 MJS 文件转换为兼容的 CJS 文件(或多个 CJS 文件),以便通过标准

<script>
标签在网站上使用。

我尝试通过 Webpack + Babel 将现有的 MJS 代码集转换为 ES5 兼容的包,但这只会导致模糊的错误;可能是由于项目设置不当造成的。此外,我尝试通过

<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?

谢谢!

javascript webpack ecmascript-6 babeljs es6-modules
1个回答
0
投票

请记住,浏览器只关心内容类型。他们根本不关心 URL 中看起来像文件扩展名的部分。

无需捆绑文件,或将它们转换为 CJS(浏览器无论如何都支持)。

只需将文件重命名为具有

.js
文件扩展名即可。更新您的
import
语句以匹配。

您可以使用任何批量重命名工具以及正则表达式搜索和替换 IDE 中的所有源文件来自动执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.