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 相关文章推荐
双击滚屏-常用推荐
Nov 29 Javascript
jQuery中将函数赋值给变量的调用方法
Mar 23 Javascript
chrome下img加载对height()的影响示例探讨
May 26 Javascript
jquery实现对联广告的方法
Feb 05 Javascript
浅析JavaScript事件和方法
Feb 28 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
Aug 04 Javascript
Angular通过angular-cli来搭建web前端项目的方法
Jul 27 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
vue 添加vux的代码讲解
Nov 30 Javascript
微信小程序人脸识别功能代码实例
May 07 Javascript
VUE.CLI4.0配置多页面入口的实现
Nov 25 Javascript
JavaScript如何判断input数据类型
Feb 06 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
一个程序下载的管理程序(三)
2006/10/09 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP进程通信基础之信号
2017/02/19 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
jquery插件开发注意事项小结
2013/06/04 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
2020/06/19 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
python中PIL安装简单教程
2016/04/21 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
Python中turtle库的使用实例
2019/09/09 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
简单了解python列表和元组的区别
2020/05/14 Python
Python日志处理模块logging用法解析
2020/05/19 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
香港士多网上超级市场:Ztore
2021/01/09 全球购物
应届毕业生求职信范例分享
2013/12/17 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
优秀语文教师事迹
2014/05/18 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android