vue cli 项目改造为 vite 时遇到 el-table 在生产环境无法显示
条评论问题
在把一个 vue-cli (webpack4 + vue2 + element-ui) 创建的项目,改造成 vite + vue2 + element-ui 项目的过程中,开发环境 el-table 正常渲染,生产环境打包后 el-table 组件无法渲染。
改造为 vite 项目的关键组件如下:
1 | { |
排查
1、用同样的代码在vue-cli 下打包,开发环境 el-table 正常渲染,生产环境 el-table 正常渲染,说明代码没问题。
2、升级 @vitejs/plugin-vue2 2.3.x,生产环境 el-table 依然无法渲染。
3、把 vite 降到 3.2.x,生产环境 el-table 正常渲染。
4、升级 vite 3.2.x 和 @vitejs/plugin-vue2 1.1.2,生产环境 el-table 正常渲染。
5、升级 vite 3.2.x 和 降级 @vitejs/plugin-vue2 1.1.1,开发环境 el-table 无法渲染,生产环境 el-table 正常渲染。
关于 el-table 异常问题组合
vite 4.4.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 2.3.x 开发环境正常,生产环境异常。
vite 4.4.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 1.1.2 开发环境正常,生产环境异常。
vite 4.4.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 1.1.1 开发环境异常,生产环境异常。
vite 3.2.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 2.3.x 开发环境正常,生产环境正常。
vite 3.2.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 1.1.2 开发环境正常,生产环境正常。
vite 3.2.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 1.1.1 开发环境异常,生产环境正常。
探索其他人是否遇到类似问题
在搜索过程中,发现 element 官方仓库中有人遇到了类似问题:
2、webpack下vue2.7.x, el-table渲染空白
还有 vite-plugin-vue2 仓库也有人反馈此问题:
3、vite-plugin-vue2 does not support some components of ElementUI
尤老板是这么回复的:
根本原因是 element-ui 用的是 cjs 语法然后 require 了 vue,导致它引用了 cjs 版本的 vue,而你的主应用跑的是 esm 版本的 vue(实际上等于应用里跑了两个 Vue)
这个情况在 Vue 3 依赖里比较少见,可以通过默认强行指定 vue 的解析路径解决。
解决办法
1、在 vite.config.js 中添加:
1 | import { defineConfig } from 'vite' |
另外一种写法:
1 | import { defineConfig } from 'vite' |
经过测试:
vite 4.4.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 2.3.x 开发环境正常,生产环境正常。
vite 4.4.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 1.1.2 开发环境正常,生产环境正常。
vite 4.4.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 1.1.1 开发环境正常,生产环境正常。
vite 3.2.x + vue 2.7 + element-ui 2.15.5 + @vitejs/plugin-vue2 1.1.1 开发环境正常,生产环境正常。
以上几种无法渲染的问题全部得到解决。
–End–
本文标题:vue cli 项目改造为 vite 时遇到 el-table 在生产环境无法显示
文章作者:郭大侠
发布时间:2025-01-21
最后更新:2025-04-03
原始链接:https://www.guozhenyi.com/post/2025/01/21/vite-vue2-el-table-render-blank.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!