Node.js: Wie kann ich den push-Fehler verhindern?
Code:
function file_tree(dir1, files1) {
const filesArray = fs.readdirSync(dir).filter(file => fs.lstatSync(dir+file))
for (let i = 0; i < filesArray.length; i++) {
// Use stat() method
fs.stat(dir+filesArray[i], (err, stats) => {
if (!err) {
if (stats.isDirectory()) {
dir1.push(filesArray[i]);
}
else if (stats.isFile()) {
files1.push(filesArray[i]);
}
}
else
throw err;
});
}
console.log(files1)
return dir1, files1
}
var dir1 = new Array();
var files1 = new Array();
dir1[n] = new Array();
files1[n] = new Array();
dir, files = file_tree(dir1, files1)
console.log(dir)
console.log(files);
Ausgabe:
undefined
[]
[]
files1.push(filesArray[i]);
^
TypeError: Cannot read properties of undefined (reading 'push')
at <dir>.js:32:16
at FSReqCallback.oncomplete (node:fs:201:5)
Node.js v20.5.1
Frage:
Wie kann ich den push-Fehler verhindern?
Ich habe es so versucht, doch:
var dir1 = new Array();
var files1 = new Array();
dir1[n] = new Array();
files1[n] = new Array();
1 Antwort
Ich würde dir empfehlen statt new Array(); zum instanziieren eines Arrays lediglich [] zu verwenden, da es aussieht, als ob deine Arrays nicht instanziiert wrrden. Wird aber nicht das Problem sein, Code wird sequentiell abgearbeitet, du startest deinen Thread früher, als der Array existiert. Du musst, die ganzen Arrays vor deren Nutzung erst ein mal Instanziieren, d. h. den unteren Code einfach rauf.