I cannot display my html pages with Node.js

Asked

Viewed 420 times

0

I am trying to display my html pages inside my main layout but always error 404:

Error: Not Found AT: Users Adiego Documents Projectsystem1 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;

Anyone can help?

error image: inserir a descrição da imagem aqui

  • How’s the app going? node index.js? or another way?

  • You need to post your routes and with which url you are trying to access them. Only with this information can’t help.

  • The error was in the same kk routes, I went there to take a look after you have spoken and found the error. Put an answer so I can mark it as correct

  • You need to set the routes correctly. This is probably the error. Important to always check the routes, avoid headaches.

1 answer

0


Good afternoon Diego,

In doing so:

// 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’re saying that for every connection you log in, no matter what it’s about, you’ll create Error('Not Found') and forward it to the next treatment routine.

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

In order for this not to 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 handling, they should not call the 'next' routine at the end, so that the treatment stops there. If it is a request that has not been handled by anyone it will fall into the defined 404.

I hope I’ve helped.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.