I can not display my html pages with Node.js

0

I'm trying to display my html pages within my main Layout but always error 404:

  

Error: Not Found       at C: \ Users \ Adiego \ Documents \ ProjectNode \ system1 \ app.js: 36: 13

This is my app.js:

var express = require('express');
var load =  require('express-load');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

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

var app = express();

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

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));



load('models').then('controllers').then('routes').into(app);


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

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});


module.exports = app;

Can anyone help?

error image:

    
asked by anonymous 02.07.2015 / 22:12

1 answer

0

Good afternoon Diego,

When you do this:

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

In Express, you are saying that for each connection you enter, no matter what, you will create the Error ('Not Found') and pass it on to the next treatment routine.

If no one at the front picks up, it will go to the client (browser in case of your example).

For this to not happen, you have to have handled the request before that, ie your problem is somewhere here:

load('models').then('controllers').then('routes').into(app);

If your models, controllers, or routes are treating, they should not call the 'next' routine at the end, so that treatment stops there. If it is a request that has not been handled by anyone it will fall into the 404 defined.

I hope I have helped.

    
04.10.2016 / 19:08