鍍金池/ 問答/HTML/ node.js TypeError: Cannot read property

node.js TypeError: Cannot read property 'length' of undefined

問題描述

Node想要根據(jù)文件名讀取文件夾內(nèi)容并輸出,但報錯,感覺邏輯沒問題,我知道是files出現(xiàn)了undefined,但不知道是為什么,向大佬們請教一下。

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)
function getAllAlbumByNames(parname,callback) {

fs.readdir(process.cwd()+"./uploads/"+parname,function (err,files) {
    var urlitems=[];
    (function iteraor(i) {
            if (i == files.length) {
                console.log(urlitems);
                callback(urlitems);
                return;
            }
            fs.stat(process.cwd() + "./uploads/" + parname + "/" + files[i], function (err, stats) {
                if (stats.isFile()) {
                    urlitems.push(files[i]);
                }
                iteraor(i + 1);
            });

        })(0);

});

};

你期待的結(jié)果是什么?實際看到的錯誤信息又是什么?

錯誤信息:
TypeError: Cannot read property 'length' of undefined

回答
編輯回答
陌璃

你把你的回調(diào)里的err打印一下就知道了,報了錯,所以files的值其實是undefined

function getAllAlbumByNames(parname, callback) {
    fs.readdir(process.cwd() + "./uploads/" + parname, function (err,files) {
        if(err) {
            console.log(err);
            return callback(err);
        }
    }
}

你去REPL里輸出一下你就知道下面這個輸出啥了

process.cwd()+"./uploads/"+parname 

0060lm7Tly1fuqjxovfybj30oj09ydgv.jpg

你加的這個點跑到前面一級文件名后面了

2018年7月19日 22:31
編輯回答
忘了我
process.cwd()+"./uploads/"+parname

你確定/uploads前要加個點?

2018年2月24日 02:28