#node.js #express #fs
#node.js #экспресс #fs
Вопрос:
Я довольно новичок в NodeJS и пытаюсь создать простой API видеопотока. Я пытаюсь аутентифицировать API с помощью промежуточного программного обеспечения, которое использует файл в системе, чтобы проверить, присутствует ли в нем электронная почта или нет. Вот код для этого:
checkUserAllowed = (req, res, next) => {
const email = req.body.email;
if (!email) {
res.status(401).send("User details not found");
return;
}
fs.readFile(dataFile, 'utf8', (err, data) => {
if (err) return false;
const emails = data.split("n");
let allowed = false;
emails.forEach((row)=>{
if (row==email) allowed=true;
next();
})
if (!allowed) res.status(401).send("User not subscribed");
return;
})
}
И фрагмент для отправки видео приведен ниже:
fs.stat(path, (err, data) => {
if (err) {
console.log(err);
res.status(404).send();
return;
}
const size = data.size;
const head = {
'Content-Length': size,
'Content-Type': 'video/mp4',
}
res.writeHead(200, head);
fs.createReadStream(path).pipe(res);
}
})
Однако при запуске этого я получаю следующую ошибку:
_http_outgoing.js:558
throw new ERR_HTTP_HEADERS_SENT('set');
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:558:11)
at ServerResponse.writeHead (_http_server.js:289:21)
at /<path>/stream.js:51:17
at FSReqCallback.oncomplete (fs.js:184:5) {
code: 'ERR_HTTP_HEADERS_SENT'
}
Есть какие-либо подсказки?
Ответ №1:
Получил глупую ошибку при вызове next() в цикле.