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: