这儿有一个曾经不常见,现在开始常见的文件后缀,mjs。
本篇文章不讨论 mjs 为什么叫 ES Modules 脚本,只针对问题,提出解决方案。
例如近期更新 Nextcloud 28,发现已经启用 mjs 脚本文件,而此时客户端即使正常接收,也未能正确处理。问题很明显,在控制台中清楚说明“MIME 文件类型错误”。表现为:Failed to load module script: The server responded with a non-JavaScript MIME type of “application/octet-stream”. Strict MIME type checking is enforced for module scripts per HTML spec.
mjs 脚本被 Nginx 以 content-type:application/octet-stream 传出来了。
目的:变 mjs 为 application/javascript。
正常 Nginx
如果是通过软件包正常安装的 Nginx,那么配置文件在 /etc/nginx/mime.types
启用编辑:vim /etc/nginx/mime.types
关注到行:application/javascript js;
将这一行修改为:application/javascript js mjs;
保存编辑。
重启 Nginx:sudo nginx -s reload
宝塔面板
如果是宝塔面板的 Nginx,打开宝塔文件管理器。
访问目录:/www/server/nginx/conf
打开文件:mime.types
关注到第8行:application/javascript js;
将这一行修改为:application/javascript js mjs;
保存编辑。
返回宝塔主页,重启 Nginx 服务。