0

I have a folder named layout in views folder but that when I run the code I got an error.

Error: ENOENT: no such file or directory, open:\nodejs\loginnew\views\layouts\layout.handlebars'

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

var app=express();

app.set('views',path.join(__dirname,'views'));
app.engine('handlebars',exphbs({defaultLayout:'layout'}));
app.set('view engine','handlebars');
app.use(bobyParser.json());
app.use(bobyParser.urlencoded({extended:false}));
app.use(cookieParser());

app.use(express.static(path.join(__dirname,'public')));
console.log(path.join(__dirname,'public'));

app.use(session({
    secret:'secret',
    saveUninitialized:true,
    resave:true,
}));

app.use(passport.initialize());
app.use(passport.session());

app.use(expressValidator({
    errorFormatter:function(param,msg,value){
        var namespace =param.split('.')
        ,root=namespace.shift()
        ,formParam=root;
        while(namespace.length){
            formParam+='['+namespace.shift()+']';
        }
        return{
            param : formParam,
            msg:msg,
            value:value
        };
    }
}));

app.use(flash());

app.use(function(req,res,next){
    res.locals.sussess_msg=req.flash('sucess_msg');
    res.locals.error_msg=req.flash('error_msg');
    res.locals.error=req.flash('error');
    next();
});

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

app.set('port', process.env.PORT || 3000);
app.listen(app.get('port'),function(){
    console.log('server start on port '+app.get('port'));
});

see here is my folder:

enter image description here

James Z
  • 12,209
  • 10
  • 24
  • 44
Honey
  • 27
  • 9
  • This mean your path isn't correct. Are you sure there's your `nodejs` folder inside your `D:/` ? – Jeremy M. Jun 07 '18 at 12:18
  • yes, I m very sure – Honey Jun 07 '18 at 12:23
  • Error: ENOENT: no such file or directory, open:\nodejs\loginnew\views\layouts\layout.handlebars' half URL is right but that layouts section got error – Honey Jun 07 '18 at 12:25
  • See the following link i had the same issue but got it finally solved https://stackoverflow.com/questions/56810751/error-enoent-no-such-file-or-directory-in-express-handlebars/56811141#56811141 – Abdulrahman Falyoun Jun 28 '19 at 17:44

1 Answers1

0

If you are not using any layout then try initializing the engine as below by setting the defaultLayout and layoutDir as blank/space.

app.engine(
    'hbs',
    expressHbs({
        extname: "hbs",
        defaultLayout: "",//"main-layout",
        layoutsDir: "",//"views/layouts/"
    })
  );
Ismael Padilla
  • 5,246
  • 4
  • 23
  • 35