ElemeFE / element

A Vue.js 2.0 UI Toolkit for Web
https://element.eleme.io/
MIT License
54.12k stars 14.64k forks source link

[Bug Report] Multiple call stack exceeded messages #10093

Closed adavie1 closed 6 years ago

adavie1 commented 6 years ago

Element UI version

2.2.1

OS/Browsers version

Ubuntu Linux 16.04

Vue version

2.5.14

Reproduction Link

https://jsfiddle.net/mmx38qxw/542/

Steps to reproduce

In the browser console I'm getting lots of these errors:

vue.esm.js?65d7:591 [Vue warn]: Error in render: "RangeError: Maximum call stack size exceeded"

found in

---> <ElInput>
       <ElCascader>
         <ElFormItem>
           <ElCol>
             <ElForm>
               <ElCard>
                 <ElCol>
                   <ElRow>
                     <FinanceSettings> at /home/anthony/ownCloud/Projects/XolasUI/src/components/finance/FinanceSettings.vue
                       <App> at /home/anthony/ownCloud/Projects/XolasUI/src/App.vue
                         <Root>
warn @ vue.esm.js?65d7:591
logError @ vue.esm.js?65d7:1739
globalHandleError @ vue.esm.js?65d7:1734
handleError @ vue.esm.js?65d7:1723
Vue._render @ vue.esm.js?65d7:4542
updateComponent @ vue.esm.js?65d7:2790
...
flushSchedulerQueue @ vue.esm.js?65d7:2983
(anonymous) @ vue.esm.js?65d7:1839
flushCallbacks @ vue.esm.js?65d7:1760
vue.esm.js?65d7:1743 RangeError: Maximum call stack size exceeded
    at _traverse (vue.esm.js?65d7:1977)
...
    at _traverse (vue.esm.js?65d7:1992)
logError @ vue.esm.js?65d7:1743
globalHandleError @ vue.esm.js?65d7:1734
handleError @ vue.esm.js?65d7:1723
Vue._render @ vue.esm.js?65d7:4542
...
flushSchedulerQueue @ vue.esm.js?65d7:2983
(anonymous) @ vue.esm.js?65d7:1839
flushCallbacks @ vue.esm.js?65d7:1760

What is Expected?

I upgraded from ui-elements 2.0.5 to the current release 2.21 and these errors appeared.

The previous version I was using was ui-elements 2.0.5 and vue 2.4.2. No changes at all to the code. Previously no issues at all.

I've deleted down completely my node_modules directory and reinstalled. Same issue.

I've tried using both npm install and yarn.

package.json:

{
  "name": "xolas-towers",
  "version": "1.0.0",
  "description": "Tower Asset Management",
  "author": "xolas.io",
  "private": true,
  "scripts": {
    "dev": "node build/dev-server.js",
    "start": "node build/dev-server.js",
    "build": "node build/build.js",
    "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
    "e2e": "node test/e2e/runner.js",
    "test": "npm run unit && npm run e2e",
    "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
  },
  "dependencies": {
    "accounting": "^0.4.1",
    "awesome-mask": "^0.5.4",
    "axios": "^0.15.3",
    "chartist": "^0.10.1",
    "chartist-plugin-legend": "^0.6.2",
    "chartist-plugin-pointlabels": "^0.0.5",
    "chartist-plugin-tooltips": "^0.0.17",
    "element-ui": "^2.0.5",
    "jssha": "^2.3.1",
    "moment": "^2.18.1",
    "v-chartist": "^0.1.4",
    "vue": "^2.5.14",
    "vue-awesome": "^2.3.1",
    "vue-config-manager": "^0.2.2",
    "vue-dragula": "^1.3.1",
    "vue-events": "^3.0.1",
    "vue-form-wizard": "^0.6.3",
    "vue-full-calendar": "^2.0.4",
    "vue-i18n": "^5.0.3",
    "vue-particles": "^1.0.9",
    "vue-progressive-image": "^2.1.2",
    "vue-router": "^2.3.0",
    "vue-wysiwyg": "^1.2.1",
    "vue2-google-maps": "^0.7.5",
    "vueleaflet": "^2.1.1",
    "vuency": "^0.0.95",
    "vuetable-2": "^1.3.1"
  },
  "devDependencies": {
    "autoprefixer": "^6.7.2",
    "babel-core": "^6.22.1",
    "babel-eslint": "^7.1.1",
    "babel-loader": "^6.2.10",
    "babel-plugin-component": "^0.9.1",
    "babel-plugin-istanbul": "^3.1.2",
    "babel-plugin-transform-runtime": "^6.22.0",
    "babel-preset-env": "^1.6.0",
    "babel-preset-es2015": "^6.24.0",
    "babel-preset-stage-2": "^6.22.0",
    "babel-register": "^6.22.0",
    "chai": "^3.5.0",
    "chalk": "^1.1.3",
    "chromedriver": "^2.33.1",
    "connect-history-api-fallback": "^1.3.0",
    "copy-webpack-plugin": "^4.0.1",
    "cross-env": "^3.1.4",
    "cross-spawn": "^5.0.1",
    "css-loader": "^0.28.1",
    "element-theme": "^2.0.1",
    "element-theme-chalk": "^2.0.5",
    "eslint": "^3.14.1",
    "eslint-config-standard": "^6.2.1",
    "eslint-friendly-formatter": "^2.0.7",
    "eslint-loader": "^1.6.1",
    "eslint-plugin-html": "^2.0.0",
    "eslint-plugin-promise": "^3.4.0",
    "eslint-plugin-standard": "^2.0.1",
    "eventsource-polyfill": "^0.9.6",
    "express": "^4.14.1",
    "extract-text-webpack-plugin": "^2.0.0",
    "file-loader": "^0.10.0",
    "friendly-errors-webpack-plugin": "^1.1.3",
    "html-webpack-plugin": "^2.28.0",
    "http-proxy-middleware": "^0.17.3",
    "inject-loader": "^2.0.1",
    "karma": "^1.4.1",
    "karma-coverage": "^1.1.1",
    "karma-mocha": "^1.3.0",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-phantomjs-shim": "^1.4.0",
    "karma-sinon-chai": "^1.2.4",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-spec-reporter": "0.0.26",
    "karma-webpack": "^2.0.2",
    "lolex": "^1.5.2",
    "mocha": "^3.2.0",
    "nightwatch": "^0.9.12",
    "node-sass": "^4.5.3",
    "opn": "^4.0.2",
    "optimize-css-assets-webpack-plugin": "^1.3.0",
    "ora": "^1.1.0",
    "phantomjs-prebuilt": "^2.1.14",
    "rimraf": "^2.6.0",
    "sass-loader": "^6.0.3",
    "selenium-server": "^3.0.1",
    "semver": "^5.3.0",
    "shelljs": "^0.7.6",
    "sinon": "^2.1.0",
    "sinon-chai": "^2.8.0",
    "url-loader": "^0.5.8",
    "vue-loader": "^11.1.4",
    "vue-template-compiler": "^2.2.4",
    "webpack": "^2.2.1",
    "webpack-bundle-analyzer": "^2.2.1",
    "webpack-dev-middleware": "^1.10.0",
    "webpack-hot-middleware": "^2.16.1",
    "webpack-merge": "^2.6.1"
  },
  "engines": {
    "node": ">= 4.0.0",
    "npm": ">= 3.0.0"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

What is actually happening?

See above.

The code in the fiddle is just one example- The same error is happening on many other parts of the system.

The same app code base has been working fine until this recent upgrade.

ryantbrown commented 6 years ago

So it looks like this is related to #10094 that I just posted. I am getting the same RangeError when using the <el-pagination> with the sizes select box.

Error in render: "RangeError: Maximum call stack size exceeded"
Found in: <ElInput><ElSelect><Sizes><ElPagination>

I just tried downgrading to 2.0.5 and then still get the error.

adavie1 commented 6 years ago

Thanks @ryantbrown . I've got the same issue for many components, I don't use el-pagination. At least I'm not alone in this and probably not crazy :-P

ryantbrown commented 6 years ago

@adavie1 Ya its definitely an issue but downgrading to Vue 2.5.13 fixes the issue on my end. Vue 2.5.14 was released a few hours ago. I am willing to bet downgrading will fix yours as well.

adavie1 commented 6 years ago

@ryantbrown Perfect! I also had to downgrade vue-template-compiler. That is a good enough workaround for now. Thanks!

jackzhu2012 commented 6 years ago

I am also getting the same error, tried downgrade vue, vuex, element, no luck so far

web-surfer commented 6 years ago

Yup, getting this error using vue 2.5.14 and vue-template-compiler 2.5.14. Have reverted vue and vue-template-compiler back down to 2.5.13, and am not receiving these errors anymore.

Leopoldthecoder commented 6 years ago

So I have boiled down to this: https://jsfiddle.net/mmx38qxw/568/ . Might have something to do with v-bind:class. Here's the issue: https://github.com/vuejs/vue/issues/7786 .

Leopoldthecoder commented 6 years ago

This affects everything that has an <el-input> in it, as long as that <el-input> has one of the four slots we provide. <el-cascader>, <el-select>, <el-pagination>, <el-date-picker>...

xsfxtsxxr commented 6 years ago

yes, vue.js rev 2.5.14 will cause stack exceeded issue, use vue.js rev 2.5.13 will fix this issue

Leopoldthecoder commented 6 years ago

Vue 2.5.15 fixes this.

gaolongxin062 commented 6 years ago

升级vue到2.5.15也出现这个问题啊

tangxiangmin commented 5 years ago

error: el-date-picker Maximum call stack size exceeded fixed: update to the latest Vue version 2.5.21 and fixed it