Search code examples
node.jsexpressexpress-handlebars

Error: Failed to lookup view "/packages" in views directory


I have the handelbars view "packages" already set up in my views folder. I have a users.js file in my "routes" folder set up like so:

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

//Get about
router.get('/about', function(req,res){
    res.render('about');
});

//Get services
router.get('/services', function(req,res){
    res.render('services');
});

//Get packages
router.get('/packages', function(req,res){
    res.render('/packages');
});

//Get incentives
router.get('/incentives', function(req,res){
    res.render('/incentives');
});

module.exports = router;

My index.js file also in the "routes" folder is:

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

//Get Homepage
router.get('/', function(req,res){
    res.render('index');
});

module.exports = router;

My app.js file is as follows:

var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var exphbs = require('express-handlebars');

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

//Init App
var app = express();

//View Engine
app.set('views', path.join(__dirname, 'views'));
app.engine('handlebars', exphbs({defaultLayout: 'layout'}));
app.set('view engine', 'handlebars');

//Set Static Folder
app.use(express.static(path.join(__dirname, 'public')));

//BodyParser Middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

app.use('/', routes);
app.use('/users', users);

//Set Port
app.set('port', (process.env.PORT || 3000));

app.listen(app.get('port'), function(){
    console.log('Server started on port '+ app.get('port'))
}); 

I don't understand what I am doing wrong when it comes to the incentives and packages views because the other views are working fine. Can anyone help?


Solution

  • You need to remove the leading / from your res.render... statements for the incentives and packages routes.

    Hope this helps!