예, 응답을 보내지 않았기 때문입니다. Express는 자동으로 응답을 보내지 않으므로 해당 엔드 포인트에 게시 할 때 응답을 리턴해야합니다. 그렇지 않으면 요청이 중단됩니다.
파일 쓰기가 비동기 일 필요는 없지만 반드시 수행해야합니다. 이 작업을 수행하는 현대적인 방법은 ... 약속, 같은 뭔가를 사용하는 것입니다
new Promise(function(resolve, reject) {
fs.writeFile('data.txt', JSON.stringify(req.body), (err) =>
{
if (err) reject(err);
else resolve(data);
}
}).then(
(success) => res.send(success)
).catch(
(err) => {
console.log(err);
res.status(500).send();
}
);
당신은 (당신이 낮은 성능의 사이트의 경우에 필요하지 않습니다) 비동기를하지 않으려면 do :
app.post('/', function(req,res) {
console.log(req.body)
fs.writeFileSync('data.txt', JSON.stringify(req.body))
res.send({"status": 200});
})
좋아, 응답을 보내고 비동기 함수로 변경하면 내 서버가 개선 될 것입니까? – Sprout
예. 하나는 서버가 요청을 처리하는 것을 클라이언트에 알리고, 다른 하나는 전체 서버에 대해 거대한 병목 현상이되지 않도록 경로를 방지합니다. –
그래서 응답을 보내면 다른 페이지로 바뀌므로 응답을 보내고 싶지만 같은 페이지에 머물러 있습니다. 그게 가능하니? – Sprout