Я написал эту функцию, которая срабатывает, когда я получаю запрос на моем сервере узлов, она отлично работает и отправляет обратно файл, который автоматически начинает загружаться.
function(req, res) {
// … other code …
try {
const fileContent = fs.readFileSync(fullPath, 'utf-8');
res.writeHead(200, {
'Content-Type': 'text/plain',
'Content-Disposition': `attachment; filename="${fileName}"`,
});
res.end(fileContent);
} catch (err) {
res.writeHead(404);
res.end();
}
}
Теперь я хочу переписать егоиспользуя метод readFile
, поэтому я попробовал что-то вроде этого:
function(req, res) {
// … other code …
fs.readFile(fullPath, 'utf-8', function(err, data) {
if (err) {
res.writeHead(404);
res.end();
return;
}
res.writeHead(200, {
'Content-Type': 'text/plain',
'Content-Disposition': `attachment; filename="${fileName}"`,
});
res.end(data);
});
}
Но теперь он всегда возвращает ошибку 404, я думаю, что функция завершается до того, как ответ готов, поэтому он отбрасывает получаемый ответпоздно?Как я могу заставить это работать?
Пожалуйста, не предлагайте использовать сторонние библиотеки, так как это не то, что я спрашиваю.Я хочу сделать это только с собственными модулями.
Заранее спасибо.
с использованием узла 10.7.0