Eu já revisei o código e já comparei com o da aula e aparentemente está tudo certo. Porém estou obtendo o seguinte erro quando retorno para view
Error: Failed to lookup view "/produtos/form" in views directory "./app/views"
at Function.render (D:\Estudos\node\casadocodigo\node_modules\express\lib\application.js:580:17)
at ServerResponse.render (D:\Estudos\node\casadocodigo\node_modules\express\lib\response.js:966:7)
at app.post (D:\Estudos\node\casadocodigo\app\routes\produtos.js:33:17)
at Layer.handle [as handle_request] (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\layer.js:95:5)
at next (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\layer.js:95:5)
at D:\Estudos\node\casadocodigo\node_modules\express\lib\router\index.js:281:22
at Function.process_params (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\index.js:335:12)
at next (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\index.js:275:10)
at D:\Estudos\node\casadocodigo\node_modules\express-validator\lib\express_validator.js:355:5
at Layer.handle [as handle_request] (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\index.js:317:13)
at D:\Estudos\node\casadocodigo\node_modules\express\lib\router\index.js:284:7
at Function.process_params (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\index.js:335:12)
at next (D:\Estudos\node\casadocodigo\node_modules\express\lib\router\index.js:275:10)
Meu produtos.js
module.exports = (app) => {
let listaProdutos = (req, res) => {
let connection = app.infra.connectionFactory();
let produtosDAO = new app.infra.ProdutosDAO(connection);
produtosDAO.lista((err, results) => {
res.format({
html: () => {
res.render('produtos/lista', {lista:results});
},
json: () => {
res.json(results);
}
});
});
connection.end();
}
app.get('/produtos', listaProdutos);
app.get('/produtos/form', (req, res) => {
res.render('produtos/form', {errosValidacao:{}});
});
app.post('/produtos', (req, res) => {
let produto = req.body;
req.assert('titulo', 'titulo é obrigatório').notEmpty();
req.assert('preco','Formato inválido').isFloat();
let erros = req.validationErrors();
if(erros) {
res.render('/produtos/form', {errosValidacao:erros});
return;
}
let connection = app.infra.connectionFactory();
let produtosDAO = new app.infra.ProdutosDAO(connection);
produtosDAO.salva(produto, (err, results) => {
res.redirect('/produtos');
});
connection.end();
});
};
Minha view form.ejs
<html>
<body>
<div class="erros">
<%if(errosValidacao){%>
<ul>
<%for(var i = 0; i<errosValidacao.length; i++){%>
<li><%=errosValidacao[i].param%> - <%=errosValidacao[i].msg%></li>
<%}%>
</ul>
<%}%>
</div>
<form action="/produtos" method="post">
<div>
<label for="titulo">Titulo</label>
<input type="text" id="titulo" name="titulo" placeholder="coloque o titulo"/>
</div>
<div>
<label for="preco">Preço</label>
<input type="text" id="preco" name="preco" placeholder="150.25"/>
</div>
<div>
<label for="descricao">Descrição</label>
<textarea cols="20" rows="10" id="descricao" name="descricao" placeholder="fale sobre o livro"></textarea>
</div>
<input type="submit" value="gravar"/>
</form>
</body>
</html>
Alguém pode me ajudar?