Это потому, что каждый запрос идет к этому app.use
кодовому блоку.app.use("/", (req, res) => { ... });
Просто поместите его под app.post("/addname", (req, res) => { ... });
app.use
, который используется для монтирования промежуточного программного обеспечения в цепочку запрос-ответ.Таким образом, каждый поступающий запрос соответствует /
(который, по сути, является каждым запросом), идет внутри этого промежуточного программного обеспечения.Итак, сначала используйте ваши маршруты, затем используйте промежуточное ПО в конце.
Надеюсь, это поможет.
РЕДАКТИРОВАТЬ:
Позвольте мне дать вам mcve, который я тестировал локально:
const express = require('express');
const fakeData = function(){
return {
s: "fakeData"
}
}
const app = express();
const port = 8181
const path = require('path')
app.get("/a", (req, res) => {
return res.json({d:'yay'});
});
app.use('/',(req,res)=>{
return res.json(fakeData());
})
app.listen(port, () => {
console.log(`Server started on PORT ${port}`);
});
Поскольку каждый запрос проходит через смонтированное промежуточное ПО, поэтому, когда вы GET
/ POST
/ НИЧЕГО получаете localhost:8181/<abosulutely_any_path>
, он будетПройдите через app.use
, потому что он обрабатывает эту функцию как промежуточное ПО и вернет { s: "fakeData" }
.
Но когда вы сделаете GET
вызов http://localhost:8181/a
, он перейдет к app.get
маршрут ПОТОМУ ЧТО МЫ ОБЪЯВИЛИ ЕГО ПЕРВЫЙ и возвращаемся { d : "yay" }