0

Ich teste einige Code mit Knoten Express Framework und Ajax. Ich stehe vor einem Problem, dass ich einen 500-Server-Fehler in der Front-End-Seite bekomme. Server-Größe Nodejs Code ist wie folgt (sehr einfach). Dies ist der Code für Express-Router. Sobald ich etwas Code über Dateisystem Arbeit wie unten hinzufügen, erhalte ich einen 500 Fehler. Aber, wenn ich die Zeile über readdirSync Funktionsaufruf entfernen, funktioniert es gut. Ich verstehe nicht, was in der Welt diese Art von Problem verursachen kann. Ich weiß, dass die synchrone Funktion hier nicht so gut ist, aber es ist nur ein einfacher Test.Node.js Dateisystem Arbeit verursacht 500 Server Fehler

router.post('/pictureListFromFile', function(req, res, next) { 
    var dirPath = "../public/img/laos1"; 
    var fileList = []; 

    // fileList = fs.readdirSync(dirPath); // --> This code cause the problem. 
    console.log(fileList); 

    // response here for ajax 
}); 

Antwort

1

Mit readdirSync, wie in den meisten synchronen Aufruf in Knoten, wenn ein Fehler auftritt, wird es einen Fehler, Absturz des Servers werfen.

Niemals synchronen Aufruf mit Knoten, die Fehlerverwaltung basiert auf try/catch und es skaliert nicht gut (es friert tatsächlich den gesamten Knotenprozess ein).

den Callback-Stil verwenden:

fs.readdir(dirPath, function (err, files){ 
    // rest of the code including res.send 
}); 
1
var fs = require('fs'); //if there is none 

var fileList = []; 
fileList.push(); //use push if you want to add to the array 

Aber was bewirkt, dass der Fehler in:

fs.readdirSync(dirPath); 

ist, dass dirpath ungültig ist. Sie müssen stattdessen __dirname + Pfad verwenden oder den korrekten Pfad angeben (C:/Programme/...).