0

Je suis en train de tester du code en utilisant un framework express et un ajax. Je suis confronté à un problème que je reçois une erreur de 500 serveurs dans le côté frontal. Le code nodejs au format serveur est comme ci-dessous (très simple). Ceci est le code pour le routeur express. Une fois que j'ajoute du code sur le fonctionnement du système de fichiers comme ci-dessous, j'obtiens une erreur 500. Mais, si je supprime la ligne à propos de l'appel de fonction readdirSync, cela fonctionne bien. Je ne comprends pas ce qui dans le monde peut causer ce genre de problème. Je sais que la fonction synchrone n'est pas très bonne ici, mais c'est juste un test simple.Le travail du système de fichiers Node.js provoque une erreur de 500 serveurs

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 
}); 

Répondre

1

Avec readdirSync, comme dans la plupart appel synchrone dans le nœud, s'il y a une erreur, il renvoie une erreur, plantage de votre serveur.

Ne jamais utiliser appel synchrone avec le noeud, la gestion des erreurs est basée sur try/catch et ne pas bien l'échelle (il gèle en fait l'ensemble du processus de nœud).

Utilisez le style de rappel:

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 

Mais ce qui cause l'erreur:

fs.readdirSync(dirPath); 

est que dirPath est invalide. Vous devez utiliser __dirname + path dont vous avez besoin ou spécifier le bon chemin (C:/Program Files/...).