提问人:coolcat99 提问时间:11/6/2023 最后编辑:coolcat99 更新时间:11/6/2023 访问量:33
无法在较旧的网络托管平台上使用 MJS 文件
Unable to use MJS files on older web hosting platform
问:
我目前正在将一个网站从新平台迁移到一个非常旧的平台。较旧的平台目前不以预期的“application/javascript”/“application/x-javascript”的形式提供 MJS 文件,而是将它们作为“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>
其中,MJS文件是捆绑版本,大多数处理我们应用程序托管的Web服务器都支持该版本。bundle.js
如果解决这个问题的正确解决方案是使用具有专门设置的辅助项目(根据我之前在 Webpack + Babel 上的说明),那么有人会碰巧知道将 MJS 文件转换为兼容 CJS 的简单配置吗?
谢谢!
答:
请记住,浏览器只关心 Content-Type。他们根本不关心 URL 中看起来像文件扩展名的部分。
无需捆绑文件,或将它们转换为 CJS(无论如何浏览器都不支持)。
只需重命名文件以具有文件扩展名即可。更新您的语句以匹配。.js
import
您可以使用任何批量重命名工具以及 IDE 中所有源文件的正则表达式搜索和替换来自动执行此操作。
评论