Also im Grunde habe ich einen Ordner, der andere Ordner enthält und jeder Ordner hat seinen eigenen Satz von Bildern, die ich in einem 'ul'
anzeigen möchte. Das Problem ist, da ich readdir
verwende, was async
ist, wie kann ich die response
schreiben, ohne eine "Schreiben Sie nach .end()
Fehler". So sieht mein Code aus.Lesen von Dateien aus Ordnern in einem Ordner
var fs = require('fs'),
url = require('url');
module.exports = function(req, res) {
req.pathName = req.pathName || url.parse(req.url).pathname;
if(req.pathName === '/gallery') {
fs.readdir('./content/images/public', function(err, filenames) {
if (err) {
console.log(err);
return;
}
if(filenames.length) {
var list_content = '';
for (var i = 0; i < filenames.length; i++) {
fs.readdir('./content/images/public/' + filenames[i], function(err, images) {
if (err) {
console.log(err);
return;
}
for (var i = 0; i < images.length; i++) {
list_content += '<li><a href="/gallery/details/'+ i +'">' + images[i] + '</a></li>';
}
var list = '<ul>' + list_content + '</ul><a href="/">Go back to homepage</a>';
res.writeHead(200, {
'Content-Type': 'text/html'
});
res.send(list);
});
}
} else {
res.writeHead(200, {
'Content-Type': 'text/html'
});
res.write('<p>There are no images in the gallery</p><a href="/">Go back to homepage</a>');
res.end();
}
});
} else {
return true;
}
}
res.end();
}
});
Ich bekomme einen Fehler, der sagt "res.send()" ist keine Funktion –
Ok. Das muss sein, weil Sie diese Async-Funktion nicht innerhalb einer Route aufrufen? Wo wenn deine Funktion (req, res)? Bitte zeige mehr von deinem Umgebungscode und sieh es dir an. –
Ich habe meine Frage bearbeitet, indem ich den ganzen Code in meine .js Datei platzierte –