Pessoal, sou bastante novo em programação, fiz o curso de NodeJS com REST API e então decidi entender como Back-End e Front-End se conectavam .... vendo alguns tutoriais desenvolvi um CRUD utilizando Handlebars e tentei subir no Heroku.
A aplicação está funcionando, quando eu testo POST e GET com o Postman está tudo ok . Porém, quando eu tento acessar alguma página que criei recebo a mensagem abaixo
{"erro":{"mensagem":"ENOENT: no such file or directory, open '/app/views/layouts/Main.handlebars'"}}
O detalhe é que quando eu testo na minha maquina, roda tudo normal ...
minha estrutura de pastas local está da seguinte forma:
Esse é meu App.js onde eu já tentei alterar os diretorios das seguintes formas, sem sucesso
app.engine('handlebars', hdbars({extname: "handlebars",defaultLayout: "Main", layoutsDir: "./views/layouts", }));
app.engine('handlebars', hdbars({extname: "handlebars",defaultLayout: "Main", layoutsDir: "/views/layouts", }));
app.engine('handlebars', hdbars({extname: "handlebars",defaultLayout: "Main", layoutsDir: "layouts", }));
app.engine('handlebars', hdbars({extname: "handlebars",defaultLayout: "Main", layoutsDir: "/layouts", }));
const express=require('express');
const app = express();
const morgan = require('morgan');
const bodyParser = require('body-parser')
app.use('/css',express.static('css'));
const hdbars = require('express-handlebars');
//app.engine('handlebars',hdbars ({defaultLayout:'Main'}));
app.engine('handlebars', hdbars({extname: "handlebars",defaultLayout: "Main", layoutsDir: "./views/layouts", }));
app.set('view engine','handlebars');
const rotaProdutos = require('./routes/produtos');
const rotaPedidos = require('./routes/pedidos');
const rotaUsuarios = require('./routes/usuarios');
app.use(morgan('dev'));//EXTENSAO QUE DA RESPOSTAS DE GET E POST
app.use('/uploads',express.static('uploads'))
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, Authorization'
);
if (req.method==='OPTIONS'){
res.header('Access-Control-Allow-Methods','PUT, POST, PATCH, DELETE, GET, OPTIONS');
return res.status(200).send({})
}
next();
})
app.use('/produtos', rotaProdutos);
app.use('/pedidos', rotaPedidos);
app.use('/usuarios', rotaUsuarios);
app.get("/", (req, res) =>{
//res.send('ROTA DO BasasARRA');
//res.sendFile(__dirname+'/views/index.html')
return res.render(__dirname+'/views/index');
//return res.send("você está no barra")
})
//QUANDO NÃO ENCONTRA A ROTA
app.use((req, res, next) =>{
const erro=new Error('Não encontrado');
erro.status=404;
next(erro);
})
app.use((error, req, res, next) =>{
res.status(error.status|| 500);
return res.send({
erro:{
mensagem:error.message
}
});
});
module.exports =app
Alguém consegue me ajudar sobre como proceder pra aparecer corretamente o main.handlebars que eu crieiObrigado