当我们将 vue 项目完成后,面临的就是如何将项目进行打包上线,放到服务器中。我使用的是 vue-cli(simple) 脚手架,所以就讲一下如何将项目进行打包,并放到 tomcat 上。 
  如果是 vue-cli (非 simple 脚手架),这篇文章可能有点帮助。地址链接:vue-cli 如何打包上线

先来描述一下期间遇到的问题有哪些:

1、打包后将 dist 文件夹和 index.html 放到 tomcat,在浏览器中访问时,出现空白页,f12 提示 404。 
2、打包好的静态资源均是绝对路径,无法引入进项目,也是 404。

1、项目目录结构

这是打包后的,所以有 dist 文件夹,打包方式:npm run build

2、webpack.config.js

这里只是一小部分,因为这边最关键的就是 publicPath,下面会提,这边可以解决静态资源 404 无法引入的问题。

3、npm run build 打包后的文件。

npm run build 打包后生成一个 dist 文件夹,这里面的目录:

我对 webpack 打包工具的原理不是很清楚,所以文件夹应该生成什么不是了解。我这边是这样子的。主要是一个主要的 build.js, 因为我们的 index.html 引入的就是这个 js 文件。还有一些图片文件和 ElementUI 生成的 ttf 和 woff。

4、如何放到服务器中。

接下来就是需要将生成的 dist 文件夹和 index.html 文件放到服务器中,只需要这两个。首先我将这两个文件放在同一个文件夹中,我命名为 gas(随意)。

然后将文件夹放到 tomcat 中,我将文件夹放到 tomcat 的 webapps 文件夹目录下:

ok 部署完成,启动 tomcat,你会发现显示一个空白页,一些静态资源都是 404。

5、解决空白页和静态资源无法引入的问题。

1、首先空白页的问题,可以重 f12 中看出来都是绝对路径的原因,而我们打包后,应该的引入路径是相对路径,这时我们需要的是修改 index.html 页面。

看一下没改之前的:

看我 /dist/build.js 引用的是绝对路径,这就导致了在 tomcat 去访问 index.html 页面时,报404。我们需要将路径变成相对路径 ./dist/build/。多一个点,很关键。好了到这里应该主页面可以显示了。

但是你会发现,我的静态资源,我的图片(不包括 img 形式的引入),例如我在 css 中 background:url() 的图片显示404。

2、解决静态资源失效的问题

这就需要修改我们的 webpack.config.js 中的 publicPath 了,默认的 vue-cli 脚手架环境搭建好后,publicPath 是这样的:

可以看到我们的路径是: /dist/。所以这时候我们如果打开页面,静态资源的路径都会是这样子的,并且报错404:

http://10.0.0.181:8088/dist/bg.png?fe9b889cea51978538ce352593be0573
  • 1

显然可以看出和我们想要的路径不一致,上面我贴出来的在 tomcat 的文件目录中我将 dist 和 index.html 都放进了一个 gas 的文件夹中。所以正确的路径应该是这样的:

http://10.0.0.181:8088/gas/dist/bg.png?fe9b889cea51978538ce352593be0573
  • 1

看出区别了吗!

解决:

所以我需要改变一下 webpack.config.js 中的输出路径 publicPath: /gas/dist/。将最外层的文件夹路径加进去,这样就可以将静态资源引入进项目了。

ok,到现在为止,最主要的两个问题解决了,一个是 index.html 空白页,另一个是 静态资源路径不正确的问题。

6、index.html 页面中的link 和 srcipt 引用的资源失效问题:

原因还是路径的地址不对:

妥协的解决方法是:将自己引用的资源手动放到打包出来的 dist 文件夹内,然后在 index.html 中按照 dist 的相对路径进行引用。

代码中的 icon.ico 就是我手动将 icon 图标放到 dist 文件夹中,然后按照对应的引用路径进行引用。其他的 css 和 js 引用一样。

7、待解决的问题:

1、在我的项目中,使用了 ElementUI 框架,但是在打包放到服务器中后,发现按钮样式变了,所有的 padding 失效,所有我只能自己手动进行添加样式。

2、在我的 index.html 中如果引入 link css文件时,还是没办法引入相对路径,所以我将 css 样式都放到了各自的组件中的 style 中了,其他的一般都是用 npm 注入依赖的形式进行安装。

8、网上搜索到的相关问题和解决方法。

1、求助!Vue项目用Webpack打包后放到服务器上,但访问是空白页?弄了好久了也不知道什么原因

2、vue项目中,npm run build生成的index.html文件只有放在根目录下打开才能生效,怎么解决?

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

vue项目如何打包扔向服务器 - Hi-Sen - 博客园相关推荐

  1. vue项目打包丢入服务器,浅谈vue项目如何打包扔向服务器

    当我们将 vue 项目完成后,面临的就是如何将项目进行打包上线,放到服务器中.我使用的是 vue-cli(simple) 脚手架,所以就讲一下如何将项目进行打包,并放到 tomcat 上. 如果是 v ...

  2. Vue项目webpack打包部署到服务器

    Vue项目webpack打包部署到服务器 这篇博文主要说的就是我今天遇到的问题,而且在经过我的询问,好多人在打包部署的时候都遇到了一些问题,下面就来说下,如何将Vue项目放置在服务器上,这里以Tomc ...

  3. vue项目(webpack+mintui),使用hbuilder打包app - 小小人儿大大梦想 - 博客园

    一.配置config/index.js 本人没有配置index.js文件,就开始进行了打包,结果最终效果是页面空白,解决了空白,接着底部图标(我是用的阿里巴巴图片)资源找不到.所以配置这步比较重要. ...

  4. java httpclient 采集_使用java HttpClient 与Web服务器交互 - elliott - 博客园

    下面程序想自动登陆系统: public static void main(String[] args) throws Exception{ HttpClient client = new HttpCl ...

  5. java 安卓项目案例_Java - 随笔分类 - android开发实例 - 博客园

    随笔分类 - Java 摘要:1.使用标准输入串对象System.inSystem.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字,这就很不适合,需要其他方法取得这样的 ...

  6. [公告]博客园新服务器照片

    今天博客园实现自己的一个梦想,拥有了一台自己的真正的服务器! 下面是博客园新购的DELL PowerEdge 2850服务器照片:   服务器配置: 配件 型号 CPU PowerEdge(TM) 2 ...

  7. iOS_CNBlog项目开发 (基于博客园api开发) 上篇

    按照惯例, 先上效果图 前言 做这个项目是因为刚好在逛博客园的时候看到一篇文章 博客园第三方客户端-i博客园正式发布App Store, 这里就帮忙贴下链接吧. 整个项目做下来大概做了半个月, 今天算 ...

  8. php项目webpack打包,Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理

    这次给大家带来Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理,Vue项目webpack打包部署时Tomcat刷新报404错误问题处理的注意事项有哪些,下面就是实战案例,一起 ...

  9. springboot+vue项目部署到外网服务器的完整步骤(前后端分离 分别部署)

    前言: 我使用的是腾讯云服务器 需要安装如下: jdk1.8 mysql5.5 Nginx mysql5.5在linux终端安是真的麻烦 后来是用小伙伴提前在宝塔安好的mysql,记得版本是5.5 关 ...

最新文章

  1. 动态执行流程分析和性能瓶颈分析的利器——gperftools的Cpu Profiler
  2. 有人说 Maven 很简单,我却被 伤害 过
  3. 伪站创建代码-山东理工
  4. 监控系统几种常见的光端机传输方案拓扑图
  5. Android学习笔记:短信控制手机之“短信开启定位”
  6. visual studio 判断dropdownlist选的是什么_测试:选一顶你觉得最漂亮的皇冠。测你长了张什么脸?我是发财脸...
  7. wxpython 优秀的界面_wxPython图形用户界面
  8. MEME将于4月12日推出V2版本
  9. 自定义video控制栏,移动端可行
  10. ios python3闪退_解决Python3 cx_Freeze打包闪退/无法执行以及No module named 'matplotlib.backends.backend_tkagg'...
  11. 易筋SpringBoot 2.1 | 第廿四篇:SpringBoot访问Docker中的MongoDB
  12. python刷题题库_python题库刷题训练
  13. vue-cropper 截图
  14. 程序化(量化)交易怎样选择服务器
  15. python的指令大全_python列表命令
  16. html+div+动画效果,CSS3效果:animate实现点点点loading动画效果(一)
  17. NTL(Number Theory Library)源码剖析(2)__基本运算
  18. CCNA之EIGRP(IGRP)
  19. 怎么取消服务器账号密码,FTP怎样取消账号密码登陆?
  20. 【SGU 448】Controlled Tournament(状态压缩动态规划)

热门文章

  1. WM的Image格式分析
  2. 64ubuntu编译32位程序
  3. spi flash驱动
  4. 万维网服务器协议提供web,万维网的HTTP和FTP协议.doc
  5. 安装linux修复系统文件夹,误删除 Linux 系统文件了?这个方法教你解决
  6. java中this_多学习才能多赚钱之:java中this什么用
  7. 文件被后台程序占用无法删除_win10重装后系统占用50G?只要做好这2步,运行比win7还快...
  8. python symbol函数展开_QGIS表达式中的函数
  9. 电商前台模板中文html5_跨境电商平台上产品如何上传?虾皮新版批量上传工具使用指南分享...
  10. python读取日志统计ip_如何通过命令行统计和排列访问日志里的ip数