1. 静态资源路径不对,在开发模式下正常,打包到服务器上的时候,发现静态资源全部请求不到

  原因:开发模式下,本地静态服务器直接从项目目录直接起的,跟static是同目录,写绝对路径没问题,直接localhost:8080/static/***什么的都没问题,npm run build出来的问题件是index.html和static同级,但是你部署服务器的时候,很有可能不是在服务器的根目录,这个时候只能用相对位置

  解决:修改config/index.js文件assetsPublicPath字段

build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'), // Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: './'
}

  2.css中大图片路径不对,开发模式下正常

  原因:打包后css文件会打包到static/css目录下,然而css中写的路径为相对路径,部署到服务器上的时候会将在原有的路径上加上static/css,比如static/css/static/img/a.png,这是因为我们使用 ExtractTextPlugin 插件,从所有构建的js文件抽离css生成一个单独的app.css文件,在js文件的地址是 ./static/img/a.png(注:地址不再你你vue源码中的相对路径,源码中比如是:../../../static/img/a.png),现在这个图片被抽离到app.css中,图片地址没有进行处理(直接复制过来),通过app.css来访问图片的地址就是:app.css 地址 + 图片的相对路径 = xxx.com/static/css + ./static/img/a.png =  xxx.com/static/css/static/img/a.png,修改方法就是从app.css文件向上跳2级目录,去到static的根目录(我这里是网站的根目录)

  解决:修改build/utils.js文件的publicPath为

if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader',
publicPath: '../../'
})
} else {
return ['vue-style-loader'].concat(loaders)
}

  3.app.js文件过大

  原因:所有的模块没有懒加载,直接打包到app.js中,请求的时候会进行全部加载

  解决:vue提供了路由懒加载,只会加载当前路由需要的模块,其他模块只有在需要的时候才会进行加载,就像下边这样子写

const Home = resolve => require([ './home.vue' ], resolve)

const router = [
{
path: '/home',
name: 'home',
component: Home
}
] export default {
router
}

  路由这样子配置后再打包时候会将app.js进行拆分,比如下方多出了0,1,2这三个模块

static/js/0.5164e09da0419db62ee7.js 12.3 kB [emitted]
static/js/2.b600d06b55e36faa8138.js 7.13 kB [emitted]
static/js/1.4301e390162e718f7d7f.js 8.46 kB [emitted]
static/js/DrawingManager.js 14.4 kB [emitted]
static/js/app.74539da84116f2e87ba3.js 76.6 kB [emitted]

  4.首屏加载慢

  原因:比如即使做了路由懒加载,打包出来的app依旧很大,项目中用到的图片文件还是很大,请求的时候还是很费时间

  解决:webpack在打包的时候将文件打包成gzip格式进行压缩,一般的静态资源服务器会默认开启gzip,如果在请求静态资源的时候,服务器发现有gzip格式会优先发gzip格式的,浏览器获取到gzip格式的资源再进行解压,这样可以减少传输的体积,首先

安装 compression-webpack-plugin

npm install --save-dev compression-webpack-plugin

然后,修改config/index.js文件

productionGzip: true,
productionGzipExtensions: ['js', 'css'],

在运行npm run build命令后,出现如下错误

D:\project\card-web\code>npm run build

> card-web@1.0.0 build D:\project\card-web\code
> node build/build.js

- building for production...D:\project\card-web\code\node_modules\compression-webpack-plugin\dist\index.js:175
compiler.hooks.emit.tapAsync({ name: 'CompressionPlugin' }, emit);

在网上查的解决办法是安装1.1.12版本的 compression-webpack-plugin 插件

打包后的文件如下

                 static/js/.bdad110050937896a84e.js.gz    13.6 kB          [emitted]
static/js/.828c628c40c4bc525ae7.js.gz 12.8 kB [emitted]
static/js/.79ae7c6abc396b26d0b3.js.gz 8.26 kB [emitted]
static/js/.d67fc44642bc1e9dbb20.js.gz kB [emitted]
static/js/.01e19cc92a46d69e9c56.js.gz 8.63 kB [emitted]
static/js/.b83718664f10c5204a2b.js.gz 9.07 kB [emitted]
static/js/.630f4cb6da91c2dd4d17.js.gz 4.08 kB [emitted]
static/js/.3925a441b5923a83afca.js.gz 9.17 kB [emitted]
static/js/.b7bd2b50e9fe640388cb.js.gz 3.15 kB [emitted]
static/js/.b83e7d7f0ca68d3d7d2f.js.gz 7.13 kB [emitted]
static/js/.643bbb7e6a8a93221184.js.gz 5.32 kB [emitted]
static/js/app.5026a87c558010ba855a.js.gz 21.6 kB [emitted]
static/js/DrawingManager.js.gz 14.4 kB [emitted]
static/css/app.c579ed9cc56fa8bbc397497ed7137724.css.gz 50.6 kB [emitted]
static/js/.c3b717f99991333b6725.js.gz kB [emitted]
static/js/vendor.f81088bb5c639380b4c5.js.gz kB [emitted] [big]

  附:用curl命令测试服务器时候开启Gzip

[root@yewu1 ~]# curl -I -H "Accept-Encoding: gzip, deflate" "http://test.szhqiot.top/static/js/manifest.32ac8929086abe9ca43c.js"
HTTP/1.1 OK
Server: nginx/1.14.
Date: Tue, Oct :: GMT
Content-Type: application/javascript
Last-Modified: Mon, Oct :: GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: W/"5bd6d9cc-6b4"
Content-Encoding: gzip

  响应头出现Content-Encoding: gzip这说明服务器开始Gzip成功

  4.f12后发现有项目中的打印信息,甚至断点

  解决:修改 webpack.prod.conf.js 文件,UglifyJsPlugin 插件新增 drop_debugger , drop_console 字段

uglifyOptions: {
compress: {
warnings: false,
drop_debugger: true,
drop_console: true
}
},

  

  

  

记录vue项目上线遇到的一些问题的更多相关文章

  1. 详细记录vue项目实战步骤(含vue-cli脚手架)

    一.通过vue-cli创建了一个demo. (vue-cli是快速构建这个单页应用的脚手架,本身继承了多种项目模板:webpack(含eslit,unit)和webpack-simple(无eslin ...

  2. 记录vue项目 用hbuilder离线打包集成极光推送 安卓篇

    极光推送的官方demo: https://github.com/jpush/jpush-hbuilder-demo 里面也记录有详细的方法了. 我记录下自己的过程. 首先去极光那里创建一个应用 获取A ...

  3. Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置

    Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...

  4. 记录weiye项目上线遇到的一些问题

    1.使用vpn访问客户内网 参考:http://jingyan.baidu.com/article/a3f121e4f9903cfc9052bb0b.html 2.设置使用ip地址直接访问项目(之后可 ...

  5. Vue项目上线后刷新报错404问题(apache,nginx,tomcat)

    转自:https://www.cnblogs.com/sxshaolong/p/10219527.html 很简单,需要 服务器端 加个配置文件,然后 重启服务就好了,记住一定要 重启服务,否则无效!

  6. vue项目部署上线

    前言 今天把自己写的demo登录写完了,就想着试着走一下部署上线的流程.参考了很多的文档,终于成功进行了部署.在这里将服务器的搭建和vue项目的 部署上线进行整理(都是基础的知识,希望对大家有帮助.对 ...

  7. vue项目环境搭建(webpack4从零搭建)--仅个人记录

    一.nodejs环境搭建 首先需要下载node.js(推荐直接官网找最新的版本),下载完成后会自带npm包管理工具,打开cmd命令行界面,输入npm -v .node -v检查node.js与npm是 ...

  8. vue 项目记录.路飞学城(一)

    前情提要: 通过vue 搭建路飞学城记录  一:项目分析 二:项目搭建 1:创建项目 vue init webpack luffy 2:初始化项目 清除默认的HelloWorld.vue组件和APP. ...

  9. vue项目 打包部署上线

    1. npm run dev:本地开发的时候做调试用的. 2. npm run build:打包部署上线,生成一个 dist 文件夹. 注意:用 npm run build 时,常遇到因引用路径不对导 ...

随机推荐

  1. content-type 组件

    content-type初识 什么是content-type ContentType是Django的内置的一个应用,可以追踪项目中所有的APP和model的对应关系,并记录在ContentType表中 ...

  2. 实验一 Java开发环境的熟悉(Linux + Eclipse)

    学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...

  3. 题解 P1496 【火烧赤壁】

    蒟蒻的第一篇题解,其实这道题是标准的离散化,模拟可以过,但是就没有训练效果了.我们首先先看数据,n<=20000,数据不多,但是范围大(-10^9<=Ai,Bi<=10^9),这时, ...

  4. js关于“call方法”百度,阿里超难面试题

    面试题:function fn(a,b){    console.log(this);    console.log(a);    console.log(a+b);}fn.call(1);fn.ca ...

  5. Linux 文件格式转码工具

    Linux 系统下文件编码转换格式工具 ICONV 下载 https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz 源码安装: $ ./con ...

  6. iTOP-i.MX6Q开发板支持安卓Android6.0系统

    迅为IMX6开发板: Android4.4/6.0系统  Linux + Qt5.7系统  Ubuntu12.04系统 部分案例:HMI:3D打印机:医疗设备:工控机:触控一体机:车载终端 核心板兼容 ...

  7. DC综合简单总结(2)

    DC综合简单总结(2) 建立时间和保持时间和数据输出延时时间 一.概念 建立时间和保持时间都是针对触发器的特性说的. 建立时间(Tsu:set up time) 是指在触发器的时钟信号上升沿到来以前, ...

  8. 20175204 张湲祯 2018-2019-2《Java程序设计》

    Arrays和String单元测试 一.类的作用 1.- String类 charAt String的charAt的作用是将字符串中第i个位置上的字符(从0开始计数)赋值给n,其用法为n=string ...

  9. static关键字特点

    目录 static关键字特点 静态代码块 static修饰与非static修饰的区别 static关键字特点 随着类的加载而加载 static修饰的变量和方法都会放在方法区中静态区,是属于类的. 静态 ...

  10. 题解 P5301 【[GXOI/GZOI2019]宝牌一大堆】

    这道题除了非常恶心以外也没有什么非常让人恶心的地方 当然一定要说有的话还是有的,就是这题和咱 ZJOI 的 mahjong 真的是好像的说~ 于是就想说这道题出题人应该被 锕 掉 noteskey 整 ...