vite打包vue3-遇到的问题记录

起因是 公司的h5是用 vue3+ vite进行开发的,使用Cordova集成到android里(相当于集成在webview里)。调试了半天,发现手机 装了应用,一直白屏,debug发现文件路径不对,改来改去,后来解决了,特此记录

参考文章: vite打包vue3后如何直接在浏览器打开(非ESModule)
上述这篇很好,参考了这篇解决了问题,不过我还遇到了其他问题。。

问题1: 打包后,直接点击index.html 显示空白问题

  • vite.config.js配置, 如果是打包时,base值变为./, 没有这个属性,则配上
base: './'

这样做还不显示,原因如下:


image.png

所以我们需要全局安装一个http-server或者live-server ,这里我用的是:

npm install live-server -g

安装好后,在打包默认的路径dist下进行访问,输入命令 live-server 浏览器会新打开一个页面,即是最终打包后要预览的页面

问题2:打包后的vue dist, 集成在android里,页面空白怎么办?

就我的白屏问题而言,是加载文件 加载不出来。如何操作:

注意!!!

01ED9ED7.gif

特别关注你的vite版本,再安装对应的 @vitejs/plugin-legacy 版本(最新的是2.0.0版本,需要 vite 3.0.0 支持)

我这里 项目vite版本是 2.9.9, 之前尝试升到3.0.0, 并安装 @vitejs/plugin-legacy 2.0.0版本的,报错好多问题,无法解决。故 最终降低了@vitejs/plugin-legacy版本。 锁定版本如下:

项目中package.json:

"vite": "^2.9.9"
 "terser": "^5.14.2",
 "@vitejs/plugin-legacy": "^1.8.2",

注: 查看vitejs/plugin-legacy历史版本可以访问vitejs/plugin-legacy的历史版本

  • 配置@vitejs/plugin-legacy相关内容
    在根目录找到vite.config.ts(js),并做如下修改
import legacy from '@vitejs/plugin-legacy';
plugins: [
    legacy({
      targets: ['defaults', 'not IE 11']
    }),
    vue()
  ],
  • 执行打包
  • 修改打包后的文件


    image.png

参考我最终的index.html实现:

image.png
  • 此时点击dist/index.html ,发现可以在浏览器正常预览内容了,再将最终的dist 文件集成到android 里,成功!
image.png

后续优化

程序员怎么会做重复而又麻烦的事情呢,如果每次打包后,都要手动更新,费手指和时间,该咋办呢?是时候拿出我的优化大法了!

01EBF56F.gif

解决思路:

  • 可以修改dist里的index.html的内容(按照上述步骤说的,进行部分内容的剔除)
  • 修改后的index.html内容运行成功,跟我们手动修改的一致

武器: nodenode-html-parser 包自定义执行的js文件(实现我们上述所说功能)

step1: node肯定都有,项目里安装node-html-parser
npm install --save node-html-parser
step2: 项目根目录下,新建自定义执行的js文件: handleDist.js
image.png

书写内容(里面注释 写的较清楚。。):

//引入路径模块
const path = require("path");
//引入文件模块
const fs = require("fs");
const parse = require('node-html-parser').parse;
let pathName = path.join(__dirname, "dist/index.html")
fs.readFile(pathName, 'utf8', function(err,html){
    if(err){
        return console.log('读取index.html文件失败'+err.message)
    }
    const root = parse(html);
    const elList = root.querySelectorAll('script')

    for(let i = 0; i< elList.length; i++) {
        // 1、移除 <script type=module> 元素
        const data = elList[i].getAttribute('type')
        if(data && data === 'module') {
            elList[i].remove()
        }

       // 2、移除其他 <script> 的 nomodule 属性
       const hasNoModule = elList[i].hasAttribute('nomodule')
       if(hasNoModule) {
           elList[i].removeAttribute('nomodule')
       }

       // 3、移除 <script id=vite-legacy-entry> 元素的内容,并把 data-src 属性名改为 src
        const hasDataSrc = elList[i].hasAttribute('data-src')
        if(hasDataSrc) {
            const legacyEle = elList[i]
            const srcData = legacyEle.getAttribute('data-src')
            legacyEle.setAttribute('src', srcData)
            legacyEle.removeAttribute('data-src')
            legacyEle.innerText = ''
        }
    }

    // 将新的组合的内容写入原有index.html
    fs.writeFileSync(pathName, root.toString())
    // console.log('222'+root.toString())
})

step3: 在项目根目录下,node运行此js文件

node .\handleDist.js

image.png

step4: 运行结束后,查看dist里的index.html ,发现跟我们手动修改是一样的。

再次手动双击index.html,发现效果也是一样,可以在浏览器里直接显示出界面

01F5E4AD.jpg

优化成功!(不会告诉你俺费了2个小时,由于node不咋会。。)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容