Ошибка: не был указан механизм по умолчанию, и расширение не было предоставлено на сервере узла - PullRequest
0 голосов
/ 14 января 2019

Я использую nodejs в качестве внутреннего сервера, в то время как мой интерфейс находится в угловом положении. Мне нужно вызвать маршрутизатор регистра, и для этого я отправляю данные из внешнего интерфейса в формате json, что идеально, но так как я пытаюсь здесь выполнить паспортную аутентификацию, я взял код паспортной аутентификации из другого репозитория github, в котором узел также использовал движок вот почему в нем был использован res.render. Но теперь мне трудно удалить эту конкретную строку из роутера реестра, и если я пытаюсь удалить ее или просто использовать res.sendStatus(500), она все равно не работает, и я получаю 500 ошибок. Какое может быть решение этой проблемы?

var express = require('express');
var mongoose = require('mongoose');
var bodyparser = require('body-parser');
var cors = require('cors');
var session = require('cookie-session');
var flash = require('connect-flash');
var passport = require('passport');
var bcrypt = require('bcryptjs');

require('./config/passport')(passport);

var User = require('./models/User');
var app = express();

app.use(bodyparser.json());
app.use(cors());
var expiryDate = new Date(Date.now() + 60 * 60 * 1000) // 1 hour
app.use(session({
  name: 'session',
  keys: ['key1', 'key2'],
  cookie: {
    secure: true,
    httpOnly: true,
    domain: 'example.com',
    path: 'foo/bar',
    expires: expiryDate
  }
}))
app.set('port', process.env.port || 3000);
app.use(passport.initialize());
app.use(passport.session());


// Connect flash
app.use(flash());

// Global variables
app.use(function(req, res, next) {
  res.locals.success_msg = req.flash('success_msg');
  res.locals.error_msg = req.flash('error_msg');
  res.locals.error = req.flash('error');
  next();
});


var db = mongoose.connect("mongodb://localhost:27017/server", {
  useNewUrlParser: true
}, function(err, response) {
  if (err) {
    console.log('There is error in connecting with mongodb');
  }
  console.log('Connection has been established.');
});

app.get('/', (req, res) => {
  res.send("hello");
});


//Trying registering with passport

app.post('/register', (req, res) => {
    console.log(req.body);
    const { firstname, lastname, email, password } = req.body;
    let errors = [];

    if (errors.length > 0) {
      res.render('register', {
        errors,
        name,
        email,
        password,
        password2
      });
    } else {
      User.findOne({ email: email }).then(user => {
        if (user) {
          errors.push({ msg: 'Email already exists' });
          res.render('register', {
            errors,
            firstname,
            lastname,
            email,
            password
          });
        } else {
          const newUser = new User({
            firstname,
            lastname,
            email,
            password
          });

          bcrypt.genSalt(10, (err, salt) => {
            bcrypt.hash(newUser.password, salt, (err, hash) => {
              if (err) throw err;
              newUser.password = hash;
              newUser
                .save()
                .then(user => {
                  req.flash(
                    'success_msg',
                    'You are now registered and can log in'
                  );
                  res.redirect('/login');
                })
                .catch(err => console.log(err));
            });
          });
        }
      })
      .catch(err => console.log(err))
    }
  });

//end


app.post('/login', (req, res, next) => {
    console.log(req.body);
    passport.authenticate('local', {
      successRedirect: '/dashboard',
      failureRedirect: '/login',
      failureFlash: true
    })(req, res, next);
  });


app.listen(app.get('port'), function(err, response) {
    console.log("Server is running");
});

1 Ответ

0 голосов
/ 14 января 2019

Вы используете res.render() в функции обратного вызова в app.post ('/ register', callback). Если вызывается res.render(), он будет искать шаблон (возможно, в каталоге представлений). Если вы не указали, какой движок использовать, вы получите эту ошибку.

...