前端项目发布到Nginx里报Failed to load module script错误

错误信息:

Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "application/octet-stream". Strict MIME type checking is enforced for module scripts per HTML spec.

报错原因:

我在项目里使用了 mjs 文件,而ngnix无法识别该类型的文件

      <script type="module" src="../build/pdf.mjs"></script>
      <link rel="stylesheet" href="viewer.css" />
      <script type="module" src="viewer.mjs"></script>

处理方式:

1.在服务器nginx目录 找到conf/mime.types 文件找到 application/javascript 项并添加mjs类型

2.确保nginx.conf里http 里include 了该文件 

 

3.然后执行命令重新载入配置文件或直接重启服务

nginx -s reload

终极踩坑:

按照以上步骤然、并、卵,你猜怎么着:

浏览器缓存搞了我一个小时,想放弃的时候才突然想到会不会是缓存问题........勾上它 F5

起飞~~~~~~~~~~~~~~~~~~ 

### Vue 项目 Nginx 部署解决方案 当遇到 Vue CLI 构建的单页面应用(SPA)部署至 Nginx 后出现404错误的情况,通常是因为Nginx未能正确处理前端路由请求。为了确保SPA能够正常工作,需配置Nginx以重定向所有未知路径回`index.html`文件。 #### 修改 `vue.config.js` 如果项目根目录下存在`vue.config.js`文件,则可以设置publicPath属性来指定公共资源的基础路径[^2]: ```javascript module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/your-project-name/' : '/' }; ``` 这会使得生产环境下的资源加载地址带上项目的名称前缀,防止跨域问题并减少因路径不匹配引发的404错。 #### 调整 Nginx 配置 对于Nginx服务器端而言,应当调整站点配置文件中的location部分,使其支持HTML5 History模式下的前端路由规则: ```nginx server { listen 80; server_name localhost; location / { root html/your_project_directory; try_files $uri $uri/ /index.html; # 关键配置项 index index.html index.htm; } } ``` 上述配置中`try_files`指令的作用在于尝试查找具体的URI对应的物理文件;若不存在则返回`index.html`给客户端解析,从而让Vue Router接管后续逻辑跳转操作而不触发实际HTTP请求。 #### 执行构建命令 完成以上更改后,在执行`npm run build`之前建议先清理node_modules缓存以及重新安装依赖包以排除潜在干扰因素[^1]: ```bash rm -rf node_modules/ npm cache clean --force npm install vue-router --save npm install npm run build ``` 最后将生成于dist目录内的静态资源上传至目标主机相应位置即可实现成功部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值