首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nodejs -路由要求进入server.js后返回的错误为404

nodejs -路由要求进入server.js后返回的错误为404
EN

Stack Overflow用户
提问于 2018-02-28 15:56:07
回答 1查看 111关注 0票数 0

我很难向这条路线提出要求。我不想把所有的东西都放在一个文件里,因为我想分开关注。

但是,当我将路由导入服务器文件时,它仍然提供404状态。拜托,有人能帮我一下吗?

这是我的登录路由文件:

代码语言:javascript
复制
//Set up
let express = require("express");
let app = express();
let logger = require("morgan");
let bodyParser = require("body-parser");
let cors = require("cors");

let database = require("./database");
let staffModel = require("./schema");

// Endpoint for the login function
app.use(cors());

const { body, validationResult } = require('express-validator/check');
const { sanitizeBody } = require('express-validator/filter');
const { trim } = require('express-validator').validator;

app.use(bodyParser.urlencoded({extended: false})); //Parses urlencoded 
bodies
app.use(bodyParser.json()); //Send JSON responses

app.use(logger('dev')); // Log requests to API using morgan


let login = require("./routes/login");
app.use("/login", login);



app.listen(8080);
console.log("Trazeapp Started, listening on port 8080");

这是我的登录路径文件。

代码语言:javascript
复制
//Set up
let express = require("express");
let router = express.Router();

router.post("/login", function(req, res){ 
    req.body.username = trim(req.body.username);
    staffModel.find({"login.username": req.body.username},
        {"login.username":1,"login.password":1,"admin":1})
        .then(data=> {
            if (data.length == 0){
                res.send({"error": "There's no staff with this username"})
            } else{
                // Get the individual values
                let uname = data[0].login.username.toString();
                let pwd = data[0].login.password.toString();
                let adm = data[0].admin.toString();
                // If user and password is correct
                if((req.body.username == uname) && (req.body.password == 
pwd)){
                    //Login information is correct
                    //Check the privilege of who is loggin in
                    if(adm == "yes"){
                        console.log("inside yes");
                        res.send({"username": uname, "password": pwd, 
"admin": true});
                    } 
                    else if(adm == "no"){
                        console.log("admin is: " + adm);
                        res.send({"username": uname, "password": pwd, 
"admin": false});
                    }
                } 
                else if((req.body.username != uname) || (req.body.password 
!= pwd)){
                    //Username and/or password is wrong
                    res.send({"error": "Your Username and/or Password is 
wrong."});
                }
            }
        })
        .catch(err=> res.send({"error": "There's an issue with the 
server."}))
});

module.exports = router;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-28 16:44:19

从以下内容更改路由定义:

代码语言:javascript
复制
router.post("/login", ...)

对此:

代码语言:javascript
复制
router.post("/", ...)

这里已经指定了/login

代码语言:javascript
复制
app.use("/login", login);

这意味着路由器中的所有路由都已经以/login作为前缀。因此,您的代码正在为/login/login创建一个不是您想要的路由。

FYI,你也可以从这里改变:

代码语言:javascript
复制
app.use("/login", login);

对此:

代码语言:javascript
复制
app.use("/", login);

不过,将您的整个登录路由器保留在/login上可能更有意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49033619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档