Получите 404 рендеринга e js с express js - PullRequest
0 голосов
/ 05 января 2020

Я использую express e js на своем бэкэнде и внешнем интерфейсе. Я сделал маршрут для отображения панели инструментов на странице администратора. но я получаю ошибку 404 для отображения при вводе своего URL http: // localhost: 3000 / admin, вот мой код:

app. js

var createError  = require('http-errors');
var express      = require('express');
var path         = require('path');
var cookieParser = require('cookie-parser');
var logger       = require('morgan');

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

var app = express();

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

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('/admin', admin);

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

// app.use((req, res, next) => {
//  res.status(404).render('error/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/404');
});

module.exports = app;

панель управления контроллера. js

exports.getDashboard = (req, res, next) => {
    res.render('dashboard', {
        pageTitle: 'Dashboard',
        path: 'admin/page/dashboard'
    });
};

Администратор моего маршрута администратора. js

const path = require('path');

var express = require('express');

const adminController = require('../controllers/backend/dashboard');

var router = express.Router();

/* GET users listing. */
router.get('/admin', adminController.getDashboard);

module.exports = router;

спасибо, пожалуйста, помогите мне в этом вопросе

Ответы [ 2 ]

1 голос
/ 05 января 2020

в приложении. js у вас уже есть маршрут /admin, затем снова в admin. js, поэтому он будет доступен с localhost:3000/admin/admin.

. Измените администратора. js на

const path = require('path');

var express = require('express');

const adminController = require('../controllers/backend/dashboard');

var router = express.Router();

/* GET users listing. */
router.get('/', adminController.getDashboard);

module.exports = router;
0 голосов
/ 06 января 2020

Проблема здесь:

const adminController = require('../controllers/backend/dashboard');

Вы не экспортируете опцию по умолчанию из панели управления контроллера, поэтому вам необходимо добавить фигурные скобки, например:

const { adminController } = require('../controllers/backend/dashboard');

Попробуйте это и дайте я знаю! :)

...