Node.js Express路由不工作.404未找到



我有一篇axios帖子要发到/users/add,但我一直收到404错误。有人能告诉我我做错了什么吗。

Server.js

app.use("/users", require("./routes/users"));

使得所有用户路由都使用用户控制器

const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
require("dotenv").config();
const app = express();
const PORT = process.env.PORT || 3000;
app.use(cors());
app.use(express.json());
const DATABASE = process.env.MONGODB_URI || "mongodb://localhost/MongoSetup";
mongoose.connect(DATABASE, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
});
mongoose.connection.once("open", () =>
console.log(`--> SERVER.JS: Connected to ${DATABASE}`)
);
mongoose.connection.on("error", (err) => {
console.log(`Mongoose connection err:n${err}`);
});
app.use("/exercises", require("./routes/exercises"));
app.use("/users", require("./routes/users"));
app.listen(PORT, () => {
console.log(`--> SERVER.JS: Server Running: http://localhost:3000/`);
});

路由/用户.js

router.route("/add").post((req, res)

应该为用户设置路线/添加

const router = require("express").Router();
let User = require("../models/user.model");
router.route("/").get((req, res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json("Error: " + err));
});
router.route("/add").post((req, res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json("User Added!"))
.catch(err => res.status(400).json("Error: " + err));
});
module.exports = router;

创建user.component.js

axios.post("/users/add", user)

应将新用户发送到/users/添加

import React, { Component } from "react";
import axios from "axios";
export default class CreateUser extends Component {
state = {
username: "",
};
handleInputChange = (event) => {
const { name, value } = event.target;
this.setState({
[name]: value,
});
};
handleSubmit = (event) => {
event.preventDefault();
const user = {
username: this.state.username
}
console.log(user);
axios.post("/users/add", user)
.then(res => console.log(res.data));
this.setState({
username: ""
})
};
render() {
return (
<div>
<h3>Create New User</h3>
<form onSubmit={this.handleSubmit}>
<div className="form-group">
<label>Username: </label>
<input 
required
name="username"
className="form-control"
value={this.state.username}
onChange={this.handleInputChange}
/>
</div>
<div className="form-group">
<input type="submit" value="Create User" className="btn btn-primary" />
</div>
</form>
</div>
);
}
}

您只需要创建一次express路由器实例,并在所有路由器(usersexercises(中使用它。

为路由工厂创建文件

const usersRoutes = require('../usersRoutes');
const exercisesRoutes = require('../exercisesRoutes');
const routerWapper = (router) => {
usersRoutes(router)
exercisesRoutes(router)
return router
};
module.exports = routerWapper;

app.js

...
const express = require("express");
const app = express();
const router = app.router();
...
app.use('/', () => routerWapper(router));
...

用户路线

const userRoutes = (router) => {
router.get("/users").get((req, res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json("Error: " + err));
});
router.get("/users/add").post((req, res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json("User Added!"))
.catch(err => res.status(400).json("Error: " + err));
});
};

锻炼路线

const exercisesRoutes = (router) => {
router.get("/exercises").get((req, res) => {
User.find()
.then(users => res.json(exercises))
.catch(err => res.status(400).json("Error: " + err));
});
};

最新更新