При нажатии на страницы из меню возникает ошибка «Страница не найдена»: использование рендеринга Handlebars - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать веб-сайт меню, используя nodeJS, и мне не нравится, когда все мои html .handlebars в одном файле. Интересно, почему мой рендеринг дает мне страницу, не найденную?

Вот структура моего проекта:

| public/
  |-- image/
  |-- javascripts
  |-- stylesheets
    |--Nav.css
    |-- reg.css
    |-- ReviewPr.css

| route
    |-- index.js
|views
  |-- mainlayout
    |--main.hbs  
  |--reg.hbs
  |--ReviewPr.hbs  

  |-app.js

Вот мой код Начиная с индекса маршрута:

  1. маршрут / индекс. js: почему не работает мой стиль свойства Dynami c?
 var express = require('express');
    var router = express.Router();

    /* GET home page. */
    router.get('/', function(req, res, next) {
      res.render('reg', { 
        title: 'Registration',
        style:'reg.css',
        style:'Nav.css'
       });
    });
    router.get('/Review Priority', function(req, res, next) {
      res.render('ReviewPr', { 
        title: 'Review',
        style: 'ReviewPr.css'

       });
    });
    router.get('/Share', function(req, res, next) {
      res.render('Share', { 
        title: 'Share',
        style:'Share.css'

       });
    });
    module.exports = router;
views / main.hbs
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
    <title>{{title}}</title>
    <link rel="stylesheet"  href="/stylesheets/{{style}}">

    </head>
    <body>

    {{{ body }}}

    </body>
    </html>
reg.hbs (первая страница: как вы можете видеть в коде: я даю ссылку на файл hbs)

    <script src="Jsonscript.js"></script>
<div class="wrapper">
  <h1>Sharing Priority Assessment Platform</h1>
  <header>
    <div class="topnav">
  <a class="active" href="NewTest1.html">Home</a>
  <a href="ReviewPr.hbs">Review Priority</a>
  <a href="Share.hbs">Share</a>
  <a href="About.hbs">About</a>
</div>
</header>
  <nav>
    <h2>Please Register only One time.If already register go to Review or Share page and look for your name</h2>
  </nav>
  <section>  
    <link rel="stylesheet" type="text/css" href="Nav.css">
    <script src="Jsonscript.js"></script>
<form id="myform" type="post">
  <fieldset>
    <legend>Register Form  </legend>
    <p>We would love to hear from you. Please fill out this form</p>
    <div class="elements">
      <label for="name">Full Name :</label>
      <input  required="required" type="text"   name="fname"  size="20"  />
    </div>
     <div class="elements">
      <label for="Email">Email :</label>
      <input required="required" type="text"  id="email" name="age" size="20" />
    </div>  
    <div class="elements">
      <label for="pro"> Type of Agent :</label>
      <select name="pro">
   <option value="RAgent">Enterprise Agent</option>
   <option value="SL" selected="selected">Shift Lead</option>
   <option value="TL" selected="selected">Team Leader</option>
   <option value="DL" selected="selected">Domain Lead</option>
   <option value="SDM" selected="selected">Service delivery Manager</option>
   </select>
    </div>      
    <div class="elements">
    <label for="Gender">Gender: </label>
      <input type="radio" name="gender" value="Male" checked="checked" id="r1"> Male 
  <input type="radio" name="gender" value="Female" id="r2"> Female 
</div>  


    <div class="submit">
       <input type="submit" id="btn" name="btn" class="btn" value="Submit" />
    </div>

  </fieldset>
</form>
</section>
</div>
<div>
  <footer>

  <small>&copy; Copyright 2020, Share Services Canada</small>
</footer>
  </div>

4). просмотров / ReviewPr.hbs: вторая страница сайта

<meta charset="utf-8">
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="ReviewPr.css">
<div class="wrapper">
  <h1>Sharing Priority Assessment Platform</h1>
  <header>
    <div class="topnav">
  <a class="active" href="NewTest1.html">Home</a>
  <a href="ReviewPr.hbs">Review Priority</a>
  <a href="Share.hbs">Share</a>
  <a href="About.hbs">About</a>
</div>
</header>
  <nav>
    <div class="elements">
      <label for="Var"> Name of Agent :</label>
    <select name="Var">
   <option value="name">yfufuf</option>

</select>
 </div>
 <div class="elements2">
      <label for="Time"> Fetch time :</label>
    <select name="Time">
   <option value="time">iytiyttu8</option>
   </select>
 </div>
 <input type="Submit" value="Submit" >
 <input type="Reset" value="Clear" >
  </nav>
  <section>SECTION</section>

</div>
<div>
  <footer>

  <small>&copy; Copyright 2020, Share Services Canada</small>
</footer>
  </div>
Окончательно: приложение. js
 var createError = require('http-errors');
    var express = require('express');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var bodyParser = require ('body-parser');
    var hbs =require ('express-handlebars');


    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');

    var app = express();

    // view engine setup
    app.engine('hbs', hbs({extname:'hbs',defaultLayout: 'main', layoutsDir: __dirname+ '/views/mainlayout'}))
    //app.engine('hbs',expbs());

    app.set('views', path.join(__dirname, 'views'));

    app.set('view engine', 'hbs');
    //app.set('view engine', 'jade');

    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    app.use('/', indexRouter);
    app.use('/users', usersRouter);

    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      next(createError(404));
    });

    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};

      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });

    module.exports = app;
Вот изображение приложения, ни одна из моих CSS работ, ни меню для перехода на другие страницы

Registration page

ReviewPr not found Error Page.

1 Ответ

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

В "views / ReviewPr.hbs" необходимо изменить URL-адрес.

До:

<a href="ReviewPr.hbs">Review Priority</a>

После:

<a href="/Review Priority">Review Priority</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...