Vue应用部署到服务器的正确方式


Posted in Javascript onJuly 15, 2017

本文介绍了Vue应用部署到服务器,分享给大家,希望此文章对各位有所帮助。

很多时候我们发现辛辛苦苦写的VueJs应用经过打包后在自己本地搭建的服务器上测试没有什么问题,但真正放在服务器上后,会发现或多或少的问题,比如:页面出现空白现象,获取资源路径不对等,我相信以VueJs为技术栈来进行前端开发的小伙伴或多或少都会遇到这样的问题,我也遇到过,那现在我们就来一一解决这样的问题。

如何打包

  1. 基于Vue-Cli,通过npm run build来进行打包的操作

如何部署

  1. 将打包出来的资源,基于Vue-Cli的一般是dist目录下有static目录和index.html文件,可以直接将这两个文件扔到服务端
  2. 但有时候,我们会直接将dist文件扔到服务端

出现的问题

  1. 打包到服务器后,出现资源引用路径的问题
  2. 打包到服务器后,出现空白页的问题
  3. 打包到服务器后,出现引入的css的type被拦截转换为"text/plain"问题
  4. 打包到服务器后,出现路由刷新404的问题

出现资源引用路径的解决方案

一般这个问题是由于在webpack配置打包发布的目录造成的。

情况一.如果是将static与index.html直接放在服务器根目录,也就是说,当前的应用访问的网址如:http://www.xxx.com

解决办法:

配置输出的publiPath:"/"或者"./"

情况二.直接将打包后的dist文件放在了服务器的根目录,也就是如果需要访问当前的应用,访问的网址

如:http://www.xxx.com/dist

解决办法:

首先需要在创建路由实例中增加:

const router = new VueRouter({
mode: 'history',
base: '/mobile/',
scorllBehavior: () => ({
y: 0
}),
routes
});

然后再打包发布目录:

publiPath:"/dist/"或者"http://www.xxx.com/dist/"

出现由于路由的history模式下刷新当前路由出现404的问题

今天做的应用发布到服务器上,发现当刷新当前路由的时候,就会出现404的状况,其实这是因为当刷新当前页面时候,所需要访问的资源在服务器上找不到,也就是说,我们在VueJs开发应用的过程中,设置路由的路径不是真实存在的路径,并且使用了history模式。

解决办法

需要后端进行配合,参考https://router.vuejs.org/en/essentials/history-mode.html

出现引入的css的type被拦截转换为"text/plain"问题

这是我开发过程中遇到的感觉很奇葩的问题,我们都知道,一般基于Vue-Cli,通过WebPack打包后的资源不需要更改什么。可是我发现,当我把代码进行上传后,输入网址,看见的页面把我吓坏了,发现所有样式不存在了,第一反应就是认为是自己在进行打包配置过程中出现了什么问题,然后通过fillder进行调试,发现css文件是正确获取到的

 Vue应用部署到服务器的正确方式

可以看到,这个css文件的type被拦截转换为"text/plain",这时候,我又把相关的配置文件看了两遍,后面发现,真的是日了狗了,让我哭一会儿。先上图

Vue应用部署到服务器的正确方式

我擦,原来是服务器端返回的类型居然是"text/plain"。这个问题很好解决,把这图直接给后端,是不是感觉被坑了/(ㄒoㄒ)/~~。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 框架使用教程 AJAX篇
Oct 11 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
Mar 21 Javascript
Windows8下搭建Node.js开发环境教程
Sep 03 Javascript
JavaScript中的Math.E属性使用详解
Jun 12 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
May 10 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
Aug 05 Javascript
简单实现jQuery弹幕效果
May 06 jQuery
详解angularjs4部署文件过大解决过程
Dec 05 Javascript
微信小程序实现单选选项卡切换效果
Jun 19 Javascript
layer弹出层自定义提交取消按钮的例子
Sep 10 Javascript
微信小程序之 catalog 切换实现解析
Sep 12 Javascript
js实现日历
Nov 07 Javascript
js+html5实现侧滑页面效果
Jul 15 #Javascript
angular2 ng build部署后base文件路径问题详细解答
Jul 15 #Javascript
Angular2关于@angular/cli默认端口号配置的问题
Jul 15 #Javascript
js编写简单的计时器功能
Jul 15 #Javascript
深入理解angular2启动项目步骤
Jul 15 #Javascript
js+html5实现复制文字按钮
Jul 15 #Javascript
js+html5实现页面可刷新的倒计时效果
Jul 15 #Javascript
You might like
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
python实现微信防撤回神器
2019/04/29 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
python简单实现插入排序实例代码
2020/12/16 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
安全生产计划书
2014/05/04 职场文书
幼儿园见习报告
2014/10/30 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫