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 相关文章推荐
Prototype使用指南之selector.js说明
Oct 26 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
Apr 01 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
Nov 19 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
js生成随机数的方法实例
Oct 16 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 Javascript
vue 设置proxyTable参数进行代理跨域
Apr 09 Javascript
Vue组件之单向数据流的解决方法
Nov 10 Javascript
vue router 通过路由来实现切换头部标题功能
Apr 24 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
Dec 31 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中的cookie
2006/11/26 PHP
php长字符串定义方法
2012/07/12 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
python实现根据图标提取分类应用程序实例
2014/09/28 Python
python将文本转换成图片输出的方法
2015/04/28 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
Python列表操作方法详解
2020/02/09 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
Python reques接口测试框架实现代码
2020/07/28 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
中西医专业毕业生职业规划书
2014/02/24 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
初中差生评语
2014/12/29 职场文书
活动费用申请报告
2015/05/15 职场文书
十八大观后感
2015/06/12 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
Java中的继承、多态以及封装
2022/04/11 Java/Android