[RESOLVIDO] Error: Failed to lookup view “mainPage” in views directory

Olá, eu mudei todo o meu código para uma pasta chamada ‘src’, e após fazer isso surgiu um problema com as views, e mesmo tendo atualizado os caminhos o erro persistiu. Segue o erro e o código:

    Error: Failed to lookup view "mainPage" in views directory "C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\views"
    at Function.render (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\application.js:580:17)
    at ServerResponse.render (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\response.js:1012:7)
    at exports.index (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\src\Controllers\homeController.js:1:35)
    at Layer.handle [as handle_request] (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\index.js:335:12)       
    at next (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\index.js:275:10)
    at expressInit (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\middleware\init.js:40:5)
    at Layer.handle [as handle_request] (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\index.js:317:13)
    at C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\index.js:335:12)       
    at next (C:\Users\Cláudio\Desktop\Dev\NODE\Prática\api-de-cadastro-e-login\node_modules\express\lib\router\index.js:275:10)

app.js

require('dotenv').config();

const express = require('express');
const mongoose = require('mongoose');
const path = require('path');
const flash = require('connect-flash');
const session = require('express-session');
const routes = require('./src/routes/routes');
const { globalVariables } = require('./src/middleware/middleware');
const mongoDBSession = require('connect-mongodb-session')(session);
const app = express();

mongoose.connect(process.env.DB_KEY, {useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true})
.then((result) => app.listen(5000, console.log('Server running on port 5000')))
.catch((err) => console.log(err));

app.use(express.static(path.join(__dirname, '/public')));
app.use(express.urlencoded({extended: false}));
app.use(express.json());

const store = new mongoDBSession({
    uri: process.env.DB_KEY,
    collection: 'mySessions'
})

app.use(
    session({
        secret: process.env.SESSION_KEY,
        resave: false,
        saveUninitialized: false,
        store: store
    })
)

app.use(flash());

app.set('views', path.resolve(__dirname, 'src', 'views'));
app.set('view engine', 'ejs');

app.use(globalVariables);
app.use(routes);


routes.js

const express = require('express');
const router = express();
const registerController = require('../Controllers/registerControler');
const loginController = require('../Controllers/loginController');
const homeController = require('../Controllers/homeController');
const produtoController = require('../Controllers/produtoController');
const { loginRequired } = require('../middleware/middleware');

//rota principal
router.get('/home', homeController.index);

//rotas de login
router.get('/login', loginController.index);
router.post('/login', loginController.login);
router.get('/logout', loginController.logout);

//rotas de cadastro
router.get('/register', registerController.index);
router.post('/register', registerController.register);

//rotas de produtos
router.get('/produtos', loginRequired, produtoController.index);

module.exports = router;

homeController.js

exports.index = (req, res) => res.render('mainPage');

As pastas estão organizadas da seguinte forma:

a pasta views tem que estar no root da aplicação, ou seja, fora da pasta src

Funcionou, obrigado!

1 curtida