【发布时间】:2021-05-03 04:32:39
【问题描述】:
我有一个带有 TypeScript 的 Node/Express 后端。
如果我在更改并保存文件后在 Postman localhost:8000/ 中运行根路由,我会得到正确的响应。但是,如果我在更改和保存文件后运行 localhost:8000/user,我会收到自动 404 HTML 响应。
只有当我首先运行根路由并且然后运行子路由,它才有效。
我在这里做错了什么?
index.ts
// External
import express from 'express';
import mongoose from 'mongoose';
import bodyParser from 'body-parser';
// Internal
import { uri } from '../backend/config/dbConsts';
import masterRoute from './api/masterRoute';
module.exports.mongoose = mongoose;
const app = express();
const PORT = 8000;
app.use(bodyParser.urlencoded({ extended: true }));
// Defines the routes used.
app.use('/', masterRoute);
app.listen(PORT, () => {
console.log(`⚡️[server]: Server is running at https://localhost:${PORT}`);
mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true });
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
});
export default app;
masterRoute.ts
import express, { Router } from 'express';
import userRoute from './routes/user.route';
const router: Router = express.Router();
router.get('/', async (req, res, next) => {
router.use('/user', userRoute);
// Returning 400 here since all requests must enter into an actual routing file.
res.status(400).send('Bad route. masterRouter.');
});
export default router;
userRoute.ts
import express, { Router } from 'express';
const router: Router = express.Router();
import userController from '../../controllers/user.controller';
router.get('/', async (req, res, next) => {
try {
const users = await userController.getAllUsers();
res.status(200).send(users);
} catch (err) {
next(err);
}
});
});
export default router;
【问题讨论】:
标签: javascript node.js typescript express routes