Monday 10 April 2017

node.js express app can't find jade view, 404 message responded

for my app i use node.js as backend and Express as framework. I use Netbeans as IDE and i get the following output.

Not Found
404

Error: Not Found
at /home/ingeborg/netbeans/GML/app.js:33:13
at Layer.handle [as handle_request] (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:317:13)
at /home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:335:12)
at next (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:275:10)
at /home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:635:15
at next (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:260:14)
at Function.handle (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:174:3)
at router (/home/ingeborg/netbeans/GML/node_modules/express/lib/router/index.js:47:12)

I have the following data setup:

- node-modules
- public
    - fonts
    - images
    - javascripts 
    - stylesheets
        stylesheets.less
        stylesheet.css
    - routes
        index.js
        error.js
        users.js
    - views
        index.jade
        error.jade
        news.jade
        layout.jade
    Gruntfile.js
    app.js
    gulpfile.js
    package.json

the app.js looks like this

var news  = require('./routes/news');
var index = 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');
...
app.use('/', index);
app.use('/index', index);
app.use('/news', news);
app.use('/users', users);

and this is my index.jade

h3 
  a(href="news") link

and this my news.jade

h3 test

.

The routing is realised over route files. index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('index');
});

router.get('/index', function(req, res, next) {
    res.render('index');
});
module.exports = router;

the news.js router file is

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('news', function(req, res, next) {
    res.render('news');
});
module.exports = router;        

The following circumstances are

  • the routing on the links "/" and "index" works as wanted.
  • the routing on "/news" or "news" (tested in the rounting, app.js and view file) not. I have no clue why the routing isn't working. I hope i haven't forgotten sth.

Thx, Inge



via Ingeborg

No comments:

Post a Comment