Express.js 主路由器工作,但他的其他路由器不工作
Express.js main router working, but others routers on him not
我在路由器上遇到了问题。我的主路由/weather 可以用,但是他上面的其他路由器不行。
app.js
const express = require('express');
const weatherRoute = require('./back/routes/weatherRouter.js');
const app = express();
app.use(bodyParser.json());
app.disable('etag');
app.use('/weather', weatherRoute);
weatherRouter.js
const router = express.Router();
router.get('/', async (req, res) => {
try {
const wholeData = await WeatherInfo.find();
res.json(wholeData);
} catch (err) {
res.json({ message: err })
}
});
router.get('/now', (req, res) => {
res.send("ITS NOT WORKING");
});
module.exports = router;
问题是 localhost:5000/weather 工作完美,但是当我想在该路由上使用其他路由器时,例如localhost:5000/weather/now 没用
知道我做错了什么吗?
更新:
当这些路由器之间没有其他路由器时,它可以工作。
例如
router.get('/', async (req, res) => {
//working
}
router.post('/:add', async (req, res) => {
//working
}
router.get('/now', async (req, res) => {
//doesnt work
}
如果我将 /now 移动到 /add router 之上,它会完美运行。有人可以解释为什么会这样吗?
我找到了解决方案。
路由器的位置很重要。
我的最后一个路由器坏了,因为另一个路由器已经抓到他了。
app.get('/:add', function (req, res) {
// this will match all /a, /b .. including /new
res.end('done!');
});
app.get('/now', function (req, res) {
// this is never called
res.end('done!!');
});
在路径部分定义实际路径 likerouter.post('/weather/now', (re, res) => {
//亨德尔重新
}
我在路由器上遇到了问题。我的主路由/weather 可以用,但是他上面的其他路由器不行。
app.js
const express = require('express');
const weatherRoute = require('./back/routes/weatherRouter.js');
const app = express();
app.use(bodyParser.json());
app.disable('etag');
app.use('/weather', weatherRoute);
weatherRouter.js
const router = express.Router();
router.get('/', async (req, res) => {
try {
const wholeData = await WeatherInfo.find();
res.json(wholeData);
} catch (err) {
res.json({ message: err })
}
});
router.get('/now', (req, res) => {
res.send("ITS NOT WORKING");
});
module.exports = router;
问题是 localhost:5000/weather 工作完美,但是当我想在该路由上使用其他路由器时,例如localhost:5000/weather/now 没用
知道我做错了什么吗?
更新:
当这些路由器之间没有其他路由器时,它可以工作。
例如
router.get('/', async (req, res) => {
//working
}
router.post('/:add', async (req, res) => {
//working
}
router.get('/now', async (req, res) => {
//doesnt work
}
如果我将 /now 移动到 /add router 之上,它会完美运行。有人可以解释为什么会这样吗?
我找到了解决方案。
路由器的位置很重要。
app.get('/:add', function (req, res) {
// this will match all /a, /b .. including /new
res.end('done!');
});
app.get('/now', function (req, res) {
// this is never called
res.end('done!!');
});
在路径部分定义实际路径 likerouter.post('/weather/now', (re, res) => { //亨德尔重新 }