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 相关文章推荐
js 上传图片预览问题
Dec 06 Javascript
从数据库读取数据后将其输出成html标签的三种方法
Oct 13 Javascript
jQuery控制Div拖拽效果完整实例分析
Apr 15 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
Apr 01 Javascript
jquery事件与绑定事件
Mar 16 Javascript
微信小程序后台解密用户数据实例详解
Jun 28 Javascript
angular中实现li或者某个元素点击变色的两种方法
Jul 27 Javascript
基于node.js express mvc轻量级框架实践
Sep 14 Javascript
Webpack 服务器端代码打包的示例代码
Sep 19 Javascript
Vue结合SignalR实现前后端实时消息同步
Sep 19 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
Aug 12 Javascript
three.js 如何制作魔方
Jul 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使用CURL获取302跳转后的地址实例
2014/05/04 PHP
Symfony控制层深入详解
2016/03/17 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
基于vue实现分页效果
2017/11/06 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
全球性的在线购物网站:Zapals
2017/03/22 全球购物
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
基于Python 函数和方法的区别说明
2021/03/24 Python
测绘工程专业个人自我评价
2013/12/01 职场文书
大学同学聚会邀请函
2014/01/29 职场文书
党员公开承诺书
2014/03/25 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
死亡证明书样本说明
2014/10/18 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
javascript函数式编程基础
2021/09/15 Javascript
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL