Ошибка 404 не найдена при использовании Pug & Express и MongoDB - PullRequest
0 голосов
/ 03 мая 2018

Я получаю на 404 не найдена ошибка с использованием Express & MongoDB для запроса POST. Я пытался повторить свои маршруты много раз, но у меня проблемы со страницей входа. Я хочу разместить информацию на моем сервере и вывести простое «Приветственное сообщение». Пожалуйста, сообщите.

Папка маршрутов:

var express = require('express');
var router = express.Router();
let mongoose = require('mongoose');
var User = require('../models/users')

//Get registration page from index button//
router.get('/register', function(req, res, next) {
  res.render('register');
    if (err) return console.error(err);
    res.json(user);
});

//Post user data to database POST /register //
router.post('/register', function(req, res, next) {
  res.render('Welcome to Fit 7');
})
    var username = req.body.username;
    var email = req.body.email;
    var password = req.body.password;

    var newuser =  new User();
    newuser.username = username;
    newuser.email = email;
    newuser.password = password;
    newuser.save(function(err, savedUser) {
        if(err) {
            console.log(err);
            return res.status(500).send();
        }
        return res.status(200).send();

    })

    module.exports = router;

Код приложения JS:

// var createError = require('http-errors');
var express = require('express');
var app = express();

var path = require('path');
// var cookieParser = require('cookie-parser');
var logger = require('morgan');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var pug = require('pug');

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

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

// view engine setup
app.set('view engine', 'pug');
app.set('views', path.join(__dirname, 'views'));


// app.use(cookieParser());
// app.use(express.static(path.join(__dirname, 'public')));

// app.use('/', indexRouter);
// app.use('/api/workouts', workouts);

 app.get('/', function (req, res) {
  res.render('index')

})

//Registration Route for New Users
app.get('/register', function (req, res) {
  res.render('register')  
});


app.get('/home', function (req, res) {
  res.render('home');
});

app.get('/workout/new', function (req, res) {
  res.render('workoutform');
});

//     catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);});

// 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;

Код шаблона мопса:

  body(data-gr-c-s-loaded='true', style='')
.container
  form(action='/register', method='post').form-signin
    h1.form-signin-heading Login to Fit-7
    label.sr-only(for='username') Name
    input#name.form-control(type='username', placeholder='username', 
required='', autofocus='')
    label.sr-only(for='email') Email address
    input#inputEmail.form-control(type='email', placeholder='email address', 
required='', autofocus='')
    label.sr-only(for='password') Password
    input#password.form-control(type='password', placeholder='password', 
required='')
    button.btn.btn-lg.btn-primary.btn-block(type='submit') Sign in
span._hsShareImage.hsShareImage  
    loom-container#lo-engage-ext-container
      loom-shadow(data-reactroot='', classname='resolved')

1 Ответ

0 голосов
/ 03 мая 2018

Похоже, вы не импортируете маршрутизатор нигде в вашем app.js. Первое добавление

var registerRoute = require("./path/to/route.js");

после того, как ваш другой требует. Затем добавьте

app.use(registerRoute)

вместо этой строки:

app.get('/register', function (req, res) {
    res.render('register')  
});
...