element icon indicating copy to clipboard operation
element copied to clipboard

[Bug Report] 最新版本elemen-ui在webpack里运行table显示空白,在vite里正常

Open yck-rgb opened this issue 1 year ago • 6 comments

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不显示 显示空白

yck-rgb avatar Jan 08 '24 04:01 yck-rgb

在 rspack看+ vue2 也是空白的

懵逼的

luoriwusheng-xia avatar Jan 24 '24 13:01 luoriwusheng-xia

webpack配置里的resolve:{ alias:{ vue$: "vue/dist/vue.esm.js", } }

改成这样就好了,在之前的issus里看到的解决方案,但不知道为什么要这样改

yck-rgb avatar Jan 26 '24 13:01 yck-rgb

webpack配置里的resolve:{ alias:{ vue$: "vue/dist/vue.esm.js", } }

改成这样就好了,在之前的issus里看到的解决方案,但不知道为什么要这样改

引用完整版的vue:参考官方文档 问题是为什么要引入完整版,为什么需要在运行时编译模版?

damaohub avatar Jan 30 '24 12:01 damaohub

webpack配置里的resolve:{ alias:{ vue$: "vue/dist/vue.esm.js", } }webpack解析器:{别名:{视图$:"vue/dist/vue.esm.js",} } 改成这样就好了,在之前的issus里看到的解决方案,但不知道为什么要这样改

引用完整版的vue:参考官方文档 问题是为什么要引入完整版,为什么需要在运行时编译模版?

我也不知道为什么

yck-rgb avatar Jan 31 '24 07:01 yck-rgb

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 vueconst Vue = require('vue')之后,即使不配置alias的情况下,同样会表现正常。

godky avatar Feb 01 '24 03:02 godky

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 vueconst Vue = require('vue')之后,即使不配置alias的情况下,同样会表现正常。

大佬很强 不明觉厉

yck-rgb avatar Feb 01 '24 07:02 yck-rgb