访问fs.readdir函数

时间:2016-12-31 13:16:01

标签: node.js function variables asynchronous

如果出现以下错误,我有问题在函数外部访问变量视频。在函数内返回经过测试的路径并且它是正确的,但是在fs.readdir()之外无法访问变量,在其外部手动写入是正确的但我想自动

我对node.js很新,我知道它不起作用,我得到的想法是:

- 全局变量 - 但不推荐使用它,我不知道如何使用它

- 使用回调制作同步函数,但我不知道如何重写代码来做到这一点

    var a=0,b; 
    var video;
    const testFolder = './Desktop/';     
    fs.readdir(testFolder, (err, files) => {
        files.forEach(file => {
            console.log(file);
            fs.stat(testFolder + '/'+file, function(err, stats){
                b=stats.ctime;
                if(b>a){
                    a=stats.ctime;
                    video=path.join(__dirname, testFolder, file);
                    console.log(video);
                }
            });
        });
    });
    fs.stat(video, function(err, stats) {
    .
    .

错误:

TypeError: path must be a string or Buffer
at TypeError (native)
at Object.fs.stat (fs.js:973:11)
at Server.<anonymous> (C:\Tajne\Java\Server\main.js:27:12)

1 个答案:

答案 0 :(得分:-1)

使用readdirSync而不是readdir

let files fs.readdirSync(testFolder);
files.forEach(file => {
        console.log(file);
        fs.stat(testFolder + '/'+file, function(err, stats){
            b=stats.ctime;
            if(b>a){
                a=stats.ctime;
                video=path.join(__dirname, testFolder, file);
                console.log(video);
            }
        });
    });
相关问题