首页 > 解决方案 > 需要帮助->未捕获(承诺)类型错误:无法读取未定义的属性“长度”

问题描述

我有一个网站,当我尝试创建新内容并选择一个类别时出现错误。之前有没有碰巧遇到过这个问题?

我不知道如何解决这个问题。

     setHierarchyPaths: function (categories, path) {
        for (var i = 0; i < categories.length; i++) {
            if (typeof path !== 'undefined') {
                categories[i].path = path + '.' + categories[i].id;
            } else {
                categories[i].path = categories[i].id;
            }

            if (categories[i].childrens.length > 0) {
                this.setHierarchyPaths(categories[i].childrens, 
      categories[i].path);
            }

            // We need a flat tree!
            this.flatTree.push(categories[i]);
        }
    },

我已经上传了这两张图片的错误。希望你能帮我解决这个问题。 https://www.screencast.com/t/PWjbxIgJe

https://www.screencast.com/t/Jt2RN08G

非常感谢

标签: javascriptphpvue.js

解决方案


这是一种很常见的错误。当您尝试访问不存在的对象的属性(或方法)时,就会发生这种情况。

一个例子

const myObject: SomeObject;
if ( myObject.length === 0) {... }

在这种情况下myObjec,已声明但仍未定义。
因此,结果length是在未定义时调用该属性。你会得到错误“无法读取未定义的属性长度”。

在您的情况下,请检查该方法setHierarchyPaths是如何被调用的,因为看起来(正如 jonrsharpe 在评论中已经说过的那样),该参数categories被提供了一个未定义的值。


推荐阅读