前端踩坑记录

js相关

Failed to load module script: The server responded with a non-JavaScript MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec.
起因

通过script标签导入js,并指定type="module",结果发现浏览器报上面的错

解决

(不想看过程的可以直接跳到第四步)

  1. 查看js文件response的响应头中,Content-Type的值为text/plain; charset=utf-8(正常来说应该是application/javascript),而对于大部分浏览器来说都会对返回的mime类型进行校验,因此无法正确解析(部分浏览器中可能不会有这种错,例如:edge
  2. 而由于后台是通过flask编写的,于是认为是服务端对静态文件返回的响应头类型有问题,而追根溯源,发现响应头的内容类型是通过mimetypes模块来获取的
  3. mimetypes默认的配置里.js的类型是application/javascript,但是使用时被改成了text/plain,而该值实际上是从注册表中获取的
  4. redegit命令打开注册表,查看HKEY_CLASSES_ROOT->.js,发现里面有一个Content-Type的配置,如图:
  5. 将该配置删掉即可
总结原因

注册表内.jsContent-Type覆盖了默认的,删掉即可,该方法适用于部分响应头的Content-Type返回不正确的情况

你可能感兴趣的:(前端踩坑记录)