首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未捕获的长度:无法读取node.js上未定义的属性‘TypeError’

未捕获的长度:无法读取node.js上未定义的属性‘TypeError’
EN

Stack Overflow用户
提问于 2020-12-02 05:48:07
回答 1查看 951关注 0票数 0

怎么样?

我一直试图在这个我一直在开发的web应用程序上添加一些提升功能,但我被卡住了。请帮帮忙。在Chrome的控制台上显示的错误是:

未捕获的索引:无法在索引((TypeError):343)的索引(( createUpvotesSection ):41)读取未定义的属性'length‘

但这有可能吗?我已经声明了"createUpvotesSection“,并尝试在Index.ejs中使用它,如下所示:

Index.ejs:

代码语言:javascript
运行
复制
function showNewsfeed() {
    var ajax = new XMLHttpRequest();
    ajax.open("POST", "/getNewsfeed", true);

    ajax.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {

            var response = JSON.parse(this.responseText);

            var html = "";
            for (var a = 0; a < response.data.length; a++) {
                var data = response.data[a];

                html += '<div class="central-meta item">';
                    html += '<div class="user-post">';
                        html += '<div class="friend-info">';

                            html += '<figure>';
                                html += '<img src="' + mainURL + "/" + data.user.profileImage + '" style="width: 45px; height: 45px; object-fit: cover;">';
                            html += '</figure>';

                            html += '<div class="friend-name">';
                                html += '<ins>';
                                    if (data.type == "post")
                                    {
                                        html += '<a href="/user/' + data.user.username + '">';
                                            html += data.user.username;
                                        html += '</a>';
                                    }
                                    else
                                    {
                                        html += data.user.name;
                                    }
                                html += '</ins>';

                                var createdAt = new Date(data.createdAt);
                                var date = createdAt.getDate() + "";
                                date = date.padStart(2, "0") + " de " + months[createdAt.getMonth()] + ", " + createdAt.getFullYear();

                                html += '<span>Publicado em: ' + date + '</span>';
                            html += '</div>';

                            html += '<div class="post-meta">';

                                html += '<div class="description">';
                                    html += '<p>';
                                        html += data.caption;
                                    html += '</p>';
                                html += '</div>';

                                if (data.image != "") {
                                    html += '<img src="' + mainURL + "/" + data.image + '">';
                                }

                                if (data.video != "") {
                                    html += '<video style="height: 359px; width: 100%;" controls src="' + mainURL + "/" + data.video + '"></video>';
                                }
                            
                                html += createUpvotesSection(data);
                            html += '</div>';
                        html += '</div>'
                    html += '</div>';
                html += '</div>';
            }
            document.getElementById("newsfeed").innerHTML = html;
        }
    };

Header.ejs (简写版本):

代码语言:javascript
运行
复制
function createUpvotesSection(data) {

                var isUpvoted = false;
                for (var b = 0; b < data.upvoters.length; b++) {
                    var upvoter = data.upvoter[b];
                    if (upvoter._id == window.user._id) {
                        isUpvoted = true;
                        break;
                    }
                }

                var html = "";

                html += '<div class="we-video-info">';
                    html += '<ul>';

                        html += '<li>';
                            var className = "";
                            if (isUpvoted) {
                                className = 'upvote';
                            } else {
                                className = "none";
                            }

                            html += '<span class="' + className +'" onclick="toggleUpvotePost(this);" data-id="' + data._id +'">';
                                html += '<i class="ti-thumb-up"></i>';
                                html += '<ins>' + data.upvoters.length + '</ins>';
                            html += '</span>';

                        html += '</li>';

                        html += '<li>';
                            html += '<span class="comment" title="Comments">';
                                html += '<i class = "fa fa-comments-o"></i>';
                                html += '<ins>' + data.comments.length + '</ins>';
                            html += '</span>';
                        html += '</li>';

                        html += '<li>';
                            html += '<span class="share" onclick="sharePost(this);" data-id="' + data._id +'">';
                                html += '<i class="ti-share"></i>';
                                html += '<ins>' + data.shares.length + '</ins>';
                            html += '</span>';
                        html +=  '</li>';

                    html += '</ul>';
                html += '</div>';

                return html;
            }
EN

回答 1

Stack Overflow用户

发布于 2020-12-02 10:35:34

根据Cannot read property 'length' of undefined on node.js的错误,这意味着你试图得到它的长度的变量是未定义的变量。在获取长度之前,先尝试定义它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65099046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档