Vue 打包程序部署到Nginx 点击跳转404

我们讲Vue打包后的程序 dist 目录部署到Nginx服务中,在使用过程中,点击了二级新的页面;然后刷新就变成了404 无法找到目标页面问题。


原因是vue的项目为单页应用,通过Nginx服务部署找不到项目路由导致的无法跳转路由配置页面。所以要在nginx服务器配置对所有的路径或者文件夹进行跳转。重定向到首页index下,这样就都能找到路由了

location / {
       # 需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
       try_files $uri $uri/ @router;
       index index.html;
 }

location @router {
       #对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
       #因此需要rewrite到index.html中,然后交给路由在处理请求资源
       rewrite ^.*$ /index.html last;
}

### 使用 npm 打包 Vue 项目的步骤 #### 配置 `publicPath` 在打包之前,确保配置文件中的`publicPath`设置为 `"./"`。这一步骤对于防止页面加载时出现空白屏幕至关重要[^1]。 ```javascript module.exports = { publicPath: './' }; ``` #### 安装必要的依赖项 为了成功编译和打包Vue项目,需安装一系列开发依赖。这些依赖包括Webpack及其CLI工具、用于处理Vue组件的loader和支持Babel转译现代JavaScript语法所需的包[^3]: ```bash npm install --save-dev webpack webpack-cli vue-loader vue-template-compiler \ babel-loader @babel/core @babel/preset-env style-loader css-loader url-loader ``` #### 修改 package.json 中的构建命令 通常情况下,在`package.json`文件内的`scripts`部分会有一个名为`build`的脚本定义来执行打包过程。如果使用的是Vue CLI服务,则该命令可能是这样的形式[^5]: ```json { "scripts": { "build": "vue-cli-service build" } } ``` 当准备好发布版本时,可以通过运行如下命令来进行最终的生产环境优化后的静态资源生成: ```bash npm run build ``` 此命令将会读取源码目录下的`.env.production`环境中指定的相关参数,并按照预设好的规则完成整个应用的压缩与混淆工作,最后输出至默认的目标文件夹——通常是根目录下的`dist`子文件夹内。 ### 部署方法 一旦完成了上述所有的本地准备工作之后,就可以着手准备将生成的内容上传到目标服务器上去了。一种简单的方式是在`package.json`里添加一条新的推送指令,它能够自动地把刚刚创建出来的产物同步给远程主机上的特定位置: ```json { "scripts": { ... "push": "npm run build && scp -r dist/* user@your.server.ip:/path/to/webroot/" } } ``` 这里假设已经通过SSH密钥认证等方式免密码登录到了对应的Linux VPS实例之中;如果不是的话,请记得提前做好相应的权限设定以便顺利完成传输动作。 另外需要注意的一点是关于URL重定向的问题。由于单页应用程序(SPA)的特点决定了除了首页之外其他任何内部链接都可能触发浏览器返回404错误提示框的情况发生。因此建议参照相关文档调整Web服务器端(比如Nginx)的配置使得所有请求都能被正确转发回index.html入口处再由前端路由机制接管后续逻辑跳转流程[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低头确望水中月亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值