Ссылки в навигационной панели перенаправляют меня на неверный путь - PullRequest
0 голосов
/ 19 апреля 2020

Я начал работать над приложением для аутентификации, и навигационные ссылки для регистрации и входа не перенаправляют меня в правильный пункт назначения. Похоже, что они нормально работают на целевой странице индекса, но не на любой другой странице.

сайт с рабочими ссылками

тот же сайт, где ссылки начинаются на перерыв

приложение. js

var app = express();

var mongoose = require("mongoose");
var bodyParser = require("body-parser");


var users = require("./routes/users.js");


app.use(bodyParser.urlencoded([{extended:false}]));
app.set("view engine","ejs");

app.use(express.static("public"));



app.get("/",function(req,res){
    res.render("index");
});

app.post("/hello",function(req,res){
    res.redirect("/");
});

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


app.listen(3000,function(){
    console.log("server has been started!!!");
}); 

маршруты / пользователи. js

var router = express.Router();


router.get("/login",function(req,res){
    res.render("login");
});

router.post("/login",function(req,res){
    res.send("hello from login");
});

router.get("/register",function(req,res){
    res.render("register");
});

router.post("/register",function(req,res){
    res.send("hello from post");
});

module.exports = router;

views / partials / header.e js

<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="css/style.css" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    </head>
    <body>
<nav class="navbar navbar-default">
  <div class="container">
    <ul class="nav navbar-nav navbar-right">
        <li><a href="users/register">Register</a></li>
        <li><a href="users/login">Login</a></li>
        <li><a href="/logout">Logout</a></li>
    </ul>
  </div>
</nav>

views / index.e js

<div class="container">
<div class="jumbotron">
    <h1>Welcome to Index page</h1>

    <p>Authentication test app</p>
</div>
</div>
<%- include('partials/footer')%>

views / register.e js


<form>
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control input-form" id="exampleInputEmail1" placeholder="Email" name="email">
  </div>
    <div class="form-group">
    <label for="exampleInputUsername">Username</label>
    <input type="text" class="form-control input-form" id="exampleInputUsername" placeholder="Username" name="username">
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control input-form" id="exampleInputPassword1" placeholder="Password" name="password">
  </div>

  <button type="submit" class="btn btn-default">Submit</button>
</form>

<%- include('./partials/footer')%>

views / login.e js


<form>
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control input-form" id="exampleInputEmail1" placeholder="Email" name="email">
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control input-form" id="exampleInputPassword1" placeholder="Password" name="password">
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>

<%- include('./partials/footer')%>

1 Ответ

0 голосов
/ 19 апреля 2020

Я считаю, что вам нужно добавить sla sh к hrefs в views/partials/header.ejs, например, так:

<li><a href="/users/register">Register</a></li>
<li><a href="/users/login">Login</a></li>

Причина:

Использование users/login добавит путь к текущий уровень документа, а не root сайта. Таким образом, если вы находитесь по адресу localhost:3000/users, href users/login расширится до localhost:3000/users/users/login, тогда как href /users/login расширится до localhost:3000/users/login

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...