Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取错误:";无法读取属性';长度';“未定义”的定义;仅在生产设置中_Javascript_Vue.js_Vuejs2_Vue Component - Fatal编程技术网

Javascript 获取错误:";无法读取属性';长度';“未定义”的定义;仅在生产设置中

Javascript 获取错误:";无法读取属性';长度';“未定义”的定义;仅在生产设置中,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,vue版本:2.1.1 我仅在生产设置中遇到以下错误: TypeError:无法读取未定义的属性“length” 在s.updated(vue.common.js:6077) 在we(vue.common.js:2754) 在De(vue.common.js:2831) 在阵列上。(vue.common.js:473) 在e(vue.common.js:422) 这在本地设置中非常有效,但只有在生产环境中才会出现此错误。当我从chrome控制台转到s.updated(vue.common.js:

vue版本:2.1.1

我仅在生产设置中遇到以下错误:

TypeError:无法读取未定义的属性“length”

在s.updated(vue.common.js:6077)

在we(vue.common.js:2754)

在De(vue.common.js:2831)

在阵列上。(vue.common.js:473)

在e(vue.common.js:422)

这在本地设置中非常有效,但只有在生产环境中才会出现此错误。当我从chrome控制台转到
s.updated(vue.common.js:6077)
行时,我得到以下代码:

var TransitionGroup = {
  props: props,

  render: function render (h) {
    var tag = this.tag || this.$vnode.data.tag || 'span';
    var map = Object.create(null);
    var prevChildren = this.prevChildren = this.children;
    var rawChildren = this.$slots.default || [];
    var children = this.children = [];
    var transitionData = extractTransitionData(this);

    for (var i = 0; i < rawChildren.length; i++) {
      var c = rawChildren[i];
      if (c.tag) {
        if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
          children.push(c);
          map[c.key] = c
          ;(c.data || (c.data = {})).transition = transitionData;
        } else if (process.env.NODE_ENV !== 'production') {
          var opts = c.componentOptions;
          var name = opts
            ? (opts.Ctor.options.name || opts.tag)
            : c.tag;
          warn(("<transition-group> children must be keyed: <" + name + ">"));
        }
      }
    }

    if (prevChildren) {
      var kept = [];
      var removed = [];
      for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {
        var c$1 = prevChildren[i$1];
        c$1.data.transition = transitionData;
        c$1.data.pos = c$1.elm.getBoundingClientRect();
        if (map[c$1.key]) {
          kept.push(c$1);
        } else {
          removed.push(c$1);
        }
      }
      this.kept = h(tag, null, kept);
      this.removed = removed;
    }

    return h(tag, null, children)
  },

  beforeUpdate: function beforeUpdate () {
    // force removing pass
    this.__patch__(
      this._vnode,
      this.kept,
      false, // hydrating
      true // removeOnly (!important, avoids unnecessary moves)
    );
    this._vnode = this.kept;
  },

  updated: function updated () {
    var children = this.prevChildren;
    var moveClass = this.moveClass || ((this.name || 'v') + '-move');
    if (!children.length || !this.hasMove(children[0].elm, moveClass)) {    // <=== This is the line throwing error
      return
    }

这里prods是作为道具传递给该组件的静态数据。

我升级到了最新版本:
2.2.1
,升级后没有看到错误,似乎他们已经在该版本中修复了该错误。

在访问长度之前确保
子项存在

改变

if (!children.length || !this.hasMove(children[0].elm, moveClass)) { 


对我来说,我意外地在一个
转换组中有一个孩子,这会导致错误。我只在有多个孩子的情况下使用过渡组,这就解决了问题


只有当我们尝试转到另一个页面,触发
update()

时,错误才会出现。prevChildren
未定义的
这不应该是使用转换组的代码,似乎您尝试设置动画的元素不存在,当组件(节点树)与实际文档树分离时,可能会发生这种情况。@是的,但为什么这可能只在生产中出现,我仍然添加了相关代码。2.2.6-错误仍然存在。我在页面上获得了带有移动动画的对象
if (!children.length || !this.hasMove(children[0].elm, moveClass)) { 
if (!children || !children.length || !this.hasMove(children[0].elm, moveClass)) {