element
element copied to clipboard
[Bug Report] 最新版本elemen-ui在webpack里运行table显示空白,在vite里正常
Element UI version
2.15.14
OS/Browsers version
win11,最新版谷歌浏览器
Vue version
2.7.16
Reproduction Link
https://github.com/yck-rgb/element-ui-vue2-webpack
Steps to reproduce
clone项目 执行npm install后执行npm run dev运行项目 table不显示
What is Expected?
显示正常table
What is actually happening?
运行项目 table不显示 显示空白
在 rspack看+ vue2 也是空白的
懵逼的
webpack配置里的resolve:{ alias:{ vue$: "vue/dist/vue.esm.js", } }
改成这样就好了,在之前的issus里看到的解决方案,但不知道为什么要这样改
webpack配置里的resolve:{ alias:{ vue$: "vue/dist/vue.esm.js", } }
改成这样就好了,在之前的issus里看到的解决方案,但不知道为什么要这样改
引用完整版的vue:参考官方文档 问题是为什么要引入完整版,为什么需要在运行时编译模版?
webpack配置里的resolve:{ alias:{ vue$: "vue/dist/vue.esm.js", } }webpack解析器:{别名:{视图$:"vue/dist/vue.esm.js",} } 改成这样就好了,在之前的issus里看到的解决方案,但不知道为什么要这样改
引用完整版的vue:参考官方文档 问题是为什么要引入完整版,为什么需要在运行时编译模版?
我也不知道为什么
cjs和esm混用导致的。配置alias之后,vue指向了用一个源。如果不配置alias,则按照nodejs默认规则解析,element-ui/lib内使用的vue是vue/dist/dist/vue.runtime.common.js
,而源码中 import Vue from vue
指向了 vue/dist/vue.runtime.esm.js
,从而使用的不是同一个Vue构造函数。在vite中经过了 esbuild
或 @rollup/plugin-commonjs
转换,cjs导入变成了esm导入,所以表现正常。结合以上分析,把入口import Vue from vue
改const Vue = require('vue')
之后,即使不配置alias的情况下,同样会表现正常。
cjs和esm混用导致的。配置alias之后,vue指向了用一个源。如果不配置alias,则按照nodejs默认规则解析,element-ui/lib内使用的vue是
vue/dist/dist/vue.runtime.common.js
,而源码中import Vue from vue
指向了vue/dist/vue.runtime.esm.js
,从而使用的不是同一个Vue构造函数。在vite中经过了esbuild
或@rollup/plugin-commonjs
转换,cjs导入变成了esm导入,所以表现正常。结合以上分析,把入口import Vue from vue
改const Vue = require('vue')
之后,即使不配置alias的情况下,同样会表现正常。
大佬很强 不明觉厉