1.4.8
windows10 / chrome 62
2.5.2
https://github.com/zhaokuohaha/dll-element-ui-test
详细见项目
Readme.md
运行 npm run dll 可以看到element-ui及其各个组件已经被打包到vendor.dll中
运行 npm run build --report 可以看到在编译生成的代码中已经没有了ElementUI的依赖, 符合预期需求
运行npm run dev发现鼠标移动到按钮上的时候没有弹出ToolTip Bug重现.
Tooltp能够正常显示
Tooltip没有显示, 并且没有报错
Translation of this issue:
1.4.8
Windows10 / Chrome 62
2.5.2
https://github.com/zhaokuohaha/dll-element-ui-test
see item
Readme.mdin detail
npm run dll, you can see that element-ui and its components have been packaged into vendor.dllrunning npm run build --report, you can see that there is no dependency on ElementUI in the compiled code, which meets the expected requirements
running npm run dev, found that the mouse moved to the button when there is no pop-up ToolTip Bug reproduction
Tooltp can display normally
Tooltip does not display and does not report errors
先下结论:这一切并不是element-ui的问题,全部都是你的webpack配置问题。
npm run dev没有预期现象发生。。把你base.config下面的 plugins注释掉。。@liaoyinglong 如果注视掉的话, 打包后vendor.hash.js体积还是会恨到, 就是 emmm 没有把 vendor.dll.js正确引用到. 😂
我先看看您的项目把, 感觉里面能找到答案
我们不认为这个是 Element 本身的问题,先关了。如果能证明是 Element 的问题,欢迎再打开。
@zhaokuohaha 我遇到了类似问题,是加载时序导致的问题。
vendor.dll.js 没有加载完毕的时候,vue template 中的el-popover 已经开始解析了,导致出现 Failed to resolve directive: popover 错误。
解决方法是在使用 popover 的地方(例如你demo的dll-element-ui-test/src/components/HelloWorld.vue)显示 import Popover:
import { Vue } from 'vue';
import { Popover } from 'element-ui';
Vue.use(Popover);
好的我试试看, 谢谢~
只有Tooltip组件没显示,其他组件都没问题,希望能够解决问题 毕竟element-ui解压有0.5M 开发模式会节省很多时间!
2.4中还有这个问题
2.4中还有这个问题,怎么我已经单独注册了 tooltip还是有问题
我在测试项目里面做了一点点尝试, 但是没有什么实质性的进展:
https://github.com/zhaokuohaha/dll-element-ui-test/issues/1
@VitaChen1228 @shimuren @mythxiaoai
在packpackge.json中的dependencies添加“element-ui": "^2.4.6":
"dependencies": {
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"element-ui": "^2.4.6"
}
这样是可以的
@707293891 我试着把我的依赖升级到2.4.6 但是好像还是没有什么效果:
https://github.com/zhaokuohaha/dll-element-ui-test/commit/38c5a9f94bf57b3ac28a2b8f7ce4626e19ee73b0
你是用@vue/cli 3.0来构建的项目么, 还是以前的vue-cli 2.x ? 难道是webpack升级之后解决了这个问题?
@zhaokuohaha "webpack": "^3.6.0",
@zhaokuohaha 是用的最新的cli
@707293891 你的项目有开源嘛, 我想去看一下相关配置 😂
@zhaokuohaha 没有改动什么配置,用vue-cli生成项目,然后把element配置加进去,然后安装
emmm 所以... 用webpack-plugin-dll了么 @707293891 , 可能我们说的不是同一个问题
的确存在这个问题
页面上innerHTML 元素之后 element-ui的tooltip 直接失效大家有遇见过吗
@zhaokuohaha 问题是一样到,可能原因不一样
那就不知道了, 可以看一下我的测试项目有什么不一样, 我的是webpack 3.x , vue-cli 2.x, vue 2.5.x, element 2.4.6
有可能在后期npm install 的时候又把element污染了,我这重新在git上clone了一份就能用了~~
... ...
之前也深入了解了一下,下图是tooltip失效时的一个属性,

再对比下正常的

找到了原因,然并卵,并不知道怎么破~~
顺便说下,Vue.js devtools,谷歌浏览器插件,了解一下.
你这走的比我远哈哈哈, 这可能是一个很有用的信息, 我晚上回去搞一搞看
大家都遇到这个问题,官方却说不是问题,大家只好自己动手,丰衣足食了,哈
我也遇到这样的问题,但是,我用了你们对话的方法,还是不行.
@fanxiaolong 我觉得还是要么不要打包dll, 要么用cdn的办法引入好一些. 毕竟element也是一个要不断更新的包:joy:
@zhaokuohaha ,加了Popover也不行,请问你怎么解决
@lsx18 没有解决, 放弃dll打包了 😂
@zhaokuohaha 转用http://element.eleme.io/#/zh-CN/component/popover#popover-dan-chu-kuang 怎么样?
@lsx18 用时可以用啦. 至于实际上用不用还是看需求吧
@zhaokuohaha @lsx18 我已经解决了我的问题,我是升级了npm包之后,其他什么都不用调整,就可以了.
npm的我给大家发一下.以下,是我当前npm包的配置,你们对比一下,看一看.
`
{
"vue": "^2.5.17",
"element-ui": "^2.4.8",
"vue-template-compiler": "^2.5.17", //比较重要的一个包,升级一下.
"webpack": "^3.6.0"
}
`
代码样式,没有出来,重新发一下.
{
"vue": "^2.5.17",
"element-ui": "^2.4.8",
"vue-loader": "^10.0.2",
"vue-template-compiler": "^2.5.17", //比较重要的一个包,一定要升级一下.
"webpack": "^3.6.0",
}
@fanxiaolong 我刚刚按照你的配置试了一下, 好像还是没有解决。 不知道是什么原因。
我升级完了之后重新运行下面的命令, 结果tootip还是不能显示, 运行npm run dev是可以正常显示的
npm run dll
npm run build
# 我本地装了 node-static 来启动一个简单的服务器
static ./dist/
项目指路 -> dll-element-ui-test
看最新一次提交。
而且发现一个问题: vue-template-compiler升级之后, node_modules里面没有发现这个包了, 只有下面这些:

@zhaokuohaha 你把以前的相关的包重新删除了,再重新全部安装一下,这个问题,我觉得主要是出在,打包时候的模板编译那里, "vue-loader",vue-template-compiler"这个两个包,一定要安装正确版本.

webpack.renderer.config.js里面
webpack.renderer.config.js 里面 ,大约21行左右, let whiteListedModules = ['vue', 'element-ui']把element-ui加入白名单就可以了
eleUI依赖vue.runtime.esm.js
但是你的项目依赖的是vue.esm.js
最终dll里面有两个vue,就导致tooltip的popper没有初始化
解决方法,保持dll.config和base.config中alias的vue一致
@fanxiaolong 我改了好久没解决,看到你这条,我就按照你说的,把node_moudules里面的东西都删了,重新 npm install . 完美解决
{
"vue": "^2.5.22",
"element-ui": "^2.4.11",
"vue-loader": "^15.5.1",
"vue-template-compiler": "^2.5.22",
"webpack": "^4.28.2",
}
把node_moudules里面的东西都删了,试过重新 npm install 都解决不了
{
"vue": "^2.5.22",
"element-ui": "^2.4.11",
"vue-loader": "^15.5.1",
"vue-template-compiler": "^2.5.22",
"webpack": "^4.28.2",
}
把node_moudules里面的东西都删了,试过重新 npm install 都解决不了
我那个是因为依赖包冲突,你这个重新安装都不行肯定是配置文件的问题,package.json的文件要修改才行,不然每次npm imstall下载下来的都是一样的东西
{
"vue": "^2.5.22",
"element-ui": "^2.4.11",
"vue-loader": "^15.5.1",
"vue-template-compiler": "^2.5.22",
"webpack": "^4.28.2",
}
把node_moudules里面的东西都删了,试过重新 npm install 都解决不了
"axios": "^0.18.0",
"better-scroll": "^1.13.2",
"echarts": "^4.1.0",
"element-ui": "^2.4.7",
"js-cookie": "^2.2.0",
"lowdb": "^1.0.0",
"moment": "^2.22.2",
"promise.prototype.finally": "^3.1.0",
"v-charts": "^1.17.10",
"vee-validate": "^2.0.9",
"vue": "^2.5.2",
"vue-clipboard2": "^0.2.1",
"vue-i18n": "^7.6.0",
"vue-infinite-loading": "^2.4.3",
"vue-router": "^3.0.1",
"vuedraggable": "^2.17.0",
"vuex": "^3.0.1"
这个是我的依赖。版本 还有依赖之间是否有冲突都要注意
有可能在后期npm install的时候又把元素污染了,我这重新在git上克隆了一份就能用了~~
... ...前前
也深入了解了一下,下图是tooltip失效时的一个属性, 再对比下正常的 找到了原因,然并卵,并不知道怎么破~~ 顺便说下,Vue.js devtools,谷歌浏览器插件,了解一下。
you can do like this
import { Tooltip } from 'element-ui'
Tooltip.props.popperOptions = {
default: () => {
return {
arrowOffset: 0,
boundariesPadding: 10,
gpuAcceleration: false,
offset: 0,
placement: 'bottom'
}
}
}
in your entry file
删了之后 install 可以了 什么原理
删了之后 install 可以了 什么原理
因为我这个项目地址是别人创建并初始化的,我在拉项目的时候被别人的代码污染了,导致node_moudules里面出现了冲突。我的好像是webpack和vee的冲突。
总之 先保证自己的package.json里面的依赖没有问题,然后删掉node_moudules里面的文件 重新install
在 webpack.dll.conf.js 里面加入
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
}
},
alias
好使了666
问题是elTooltip引入了vue, 重写beforeCreate方法可以解决这个问题,代码如下:
ElementUI.ElTooltip.beforeCreate = function () {
if (this.$isServer) return;
this.popperVM = new Vue({
data: { node: '' },
render(h) {
return this.node;
}
}).$mount();
let that = this
this.debounceClose = debounce(200, () => this.handleClosePopper());
}
},
在el-table表头引用的elTooltip也要能通过重写,替换Vue
在 webpack.dll.conf.js 里面加入
resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', } },
这种方式在vue-cli3配置了,无效;
解决了
# 这样是不显示tooltip的
<el-tooltip effect="dark" content="你好啊">
放我这
</el-tooltip>
# 这样显示tooltip的
<el-tooltip effect="dark" content="你好啊">
<p>放我这</p>
</el-tooltip>
看起来是el-tooltip里得是一个元素,不能直接是text
在 webpack.dll.conf.js 里面加入
resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', } },
@Constaline 66666,vue/cli2可以使用此法解决
版本:Element-UI 2.3.9
组件: el-table el-table-column设置属性show-overflow-tooltip = true在chrome、Safari上可以显示,但是在Firefox上无效
webpack.renderer.config.js 里面 ,大约21行左右, let whiteListedModules = ['vue', 'element-ui']把element-ui加入白名单就可以了
亲测这个办法可用!
webpack.renderer.config.js 里面 ,大约21行左右, let whiteListedModules = ['vue', 'element-ui']把element-ui加入白名单就可以了
亲测可用,2020了还要用到也真是…
终于解决了,我本来用的是 element-ui 2.11.1,试了各种方法,终于在在 element-ui 2.2.2 版本上解决了我 dll 打包之后,table 不显示的问题
在el-table表头引用的elTooltip也要能通过重写,替换Vue
能说的在具体点吗?是在自己代码里覆写吗?我看toolitp 源码和这个是一样的,如果在自己代码里覆写,debounce 怎么引用呢
Most helpful comment
在 webpack.dll.conf.js 里面加入