1
resposta

Error: Failed to lookup view "produtos/lista"

Bom dia! Estou seguindo o curso e me deparei com um erro o qual não consigo resolver. Já busquei no forum aqui e até em foruns externos, mas não consigo resolver o problema..

Depois de tudo configurado, quando tento acessar o localhost:3000, recebo o seguinte erro:

"Error: Failed to lookup view "produtos/lista" in views directory "./app/views"
    at Function.render (C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\application.js:580:17)
    at ServerResponse.render (C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\response.js:1008:7)
    at C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\app\routes\produtos.js:3:9
    at Layer.handle [as handle_request] (C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\fmacedo\Desktop\Cursos ALURA\NodeJS\projetos\casadocodigo\node_modules\express\lib\router\index.js:275:10)"

Seguem meus arquivos de configuração e minha estrutura:

Estrutura:

casadocodigo > app > routers > produtos.js views> produtos> lista.js config > express.js app.js

Segue o conteúdo dos arquivos:

app.js:

var app = require('./config/express')();
var rotasProdutos = require('./app/routes/produtos')(app);

app.listen(3000, function(){
    console.log("Servidor rodando");
});

==========================================

produtos.js:

module.exports = function(app) {
  app.get('/produtos', function(req,res) {
    res.render("produtos/lista");
  });
}

==========================================

lista.js:

<html>
  <body>
    <table>
      <tr>
        <td>id</td>
        <td>nome</td>
      </tr>
      <tr>
        <td>1</td>
        <td>Livro de node js</td>
      </tr>
    </table>
  </body>
</html>

==========================================

express.js:

var app = require('express')();
app.set('view engine', 'ejs');
app.set('views', './app/views');

module.exports = function() {
    return app;
};

==========================================

1 resposta

Oi Felipe,

Acredito que seja por que o arquivo lista deve ter a extensão .ejs, e o seu arquivo está com .js

Renomeie o arquivo e veja se resolve.