本地Nginx搭建站点引入JavaScript模块报错MIME类型为text/plain如何解决
问题根因
ES模块脚本要求服务器必须返回正确的text/javascript MIME类型,当前Nginx虽然在配置中引入了mime.types文件,但系统自带的该文件可能未配置.js后缀对应的正确类型,或是存在优先级更高的配置覆盖了MIME规则,导致返回text/plain触发校验报错。
可行解决步骤
方案1:修改全局mime.types配置
打开/etc/nginx/mime.types文件,检查types块中是否存在如下配置:types { text/javascript js mjs; }若不存在则手动添加,若现有配置中.js后缀对应值为
text/plain,修改为text/javascript即可,同时添加mjs后缀适配ES模块常用命名规范。方案2:在server块强制指定JS文件MIME类型
若不想修改全局配置,可直接在现有server块中添加局部规则,修改后配置如下:server { location / { root /home/jyoung/Web/Test1/www; # 强制指定JS类文件返回正确MIME类型 location ~* \.(js|mjs)$ { types { } default_type text/javascript; } } location /images/ { root /home/jyoung/Web/Test1; } }空的
types {}配置会清空当前层级继承的MIME规则,再通过default_type强制指定.js和.mjs文件返回text/javascript,优先级最高不会被其他配置覆盖。方案3:排查文件基础属性
确认JS文件后缀为.js/.mjs、无拼写错误,同时Nginx运行用户对JS文件有可读权限,特殊场景下权限不足也会导致Nginx返回text/plain类型。
生效验证
修改配置后执行nginx -t检查配置语法是否合法,确认无报错后重启Nginx,清空浏览器缓存后重新访问页面即可。
内容的提问来源于stack exchange,提问作者user3195869
相关产品推荐
相关产品推荐

