0

Я тестирую некоторый код, используя фреймворк node express и ajax. У меня возникла проблема с тем, что я получаю ошибку сервера 500 на лицевой стороне. Код nodezs для размера сервера, как показано ниже (очень просто). Это код для экспресс-маршрутизатора. Как только я добавлю код о работе файловой системы, как показано ниже, я получаю ошибку 500. Но, если я удалю строку о вызове функции readdirSync, она работает хорошо. Я не понимаю, что в мире может вызвать такую ​​проблему. Я знаю, что синхронная функция здесь не так хороша, но это всего лишь простой тест.Работа с файловой системой Node.js вызывает ошибку сервера 500

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

ответ

1

С readdirSync, как и в большинстве синхронного вызова в узле, если есть ошибка, то она выдаст ошибку, сбой сервера.

Никогда не используйте синхронный вызов с узлом, управление ошибками основано на try/catch, и оно недостаточно масштабируется (это фактически замораживает весь процесс узла).

Используйте стиль обратного вызова:

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 

Но что вызывает ошибку в:

fs.readdirSync(dirPath); 

является то, что dirPath является недействительным. Вы должны использовать __dirname + путь, который вам нужен, или указать правильный путь (C:/Program Files/...).

Смежные вопросы