繁体   English   中英

Node.js Express 路线不起作用。 404 未找到

[英]Node.js Express route not working. 404 not found

我有 axios 发布到 /users/add 并且我不断收到 404 错误。 谁能给我一些关于我做错了什么的见解。

服务器.js

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

使所有用户路由都使用用户 controller

 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/`); });

路线/users.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/add

 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> ); } }

您只需创建一次快速路由器实例并在所有路由器( usersexercises )中使用它。

为路由工厂创建文件

const usersRoutes = require('../usersRoutes');
const exercisesRoutes = require('../exercisesRoutes');
const routerWapper = (router) => {
    usersRoutes(router)
    exercisesRoutes(router)

    return router
};
module.exports = routerWapper;

应用程序.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));
    });

};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM