如果出现以下错误,我有问题在函数外部访问变量视频。在函数内返回经过测试的路径并且它是正确的,但是在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)
答案 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);
}
});
});