Express - это структура, которая обрабатывает циклы запроса / ответа, перебирая маршруты, соответствующие пути, указанному в HTTP-запросе, и позволяя вашему коду отправлять ответ в каждом совпадении или вызывать next()
, если он не отправлял один.Проблема в том, что у вас есть следующее:
app.get("/",function(req,res,next){
res.sendFile(...);
next();
});
app.get("/",function(req,res,next){
if (req.query.titolo){
...
res.json(...);
}
});
Этот код означает
Всякий раз, когда я получаю HTTP-запрос на /
, отправьте некоторый HTML, а затем, если запрос содержитtitolo
в запросе также отправьте JSON.
Express сообщает, что вы не можете отправлять что-либо еще, поскольку вы уже отправили HTML.
Одно из решений можетчтобы переместить маршрут API над HTML:
app.get("/",function(req,res,next){
if (req.query.titolo){
...
res.json(...);
} else {
next();
}
});
app.get("/",function(req,res){
res.sendFile(...);
});
, что означает
Всякий раз, когда я получаю HTTP-запрос на /
, если запрос содержит titolo
взапрос, отправьте JSON, в противном случае отправьте HTML.
Но я рекомендую переместить маршрут API в другой путь, который не конфликтует с маршрутом для вашего статического файла, который являетсянамного более типично для HTTP-серверов.