1- import path from ' node:path'
2- import express from 'express'
3- import createError from 'http-errors'
4- import logger from 'morgan'
5- import connectMongoose from './lib/connectMongoose.js'
6- import * as homeController from './controllers/homeController .js'
7- import * as loginController from ' ./controllers/loginController .js'
8- import * as agentsController from ' ./controllers/agentsController .js'
9- import * as sessionManager from './lib/sessionManager .js'
10- import upload from ' ./lib/uploadConfigure .js'
11- import i18n from './lib/i18nConfigure.js'
1+ import path from " node:path" ;
2+ import { fileURLToPath } from "node:url" ;
3+ import express from "express" ;
4+ import createError from "http-errors" ;
5+ import logger from "morgan" ;
6+ import connectMongoose from "./lib/connectMongoose .js" ;
7+ import * as homeController from " ./controllers/homeController .js" ;
8+ import * as loginController from " ./controllers/loginController .js" ;
9+ import * as agentsController from "./controllers/agentsController .js" ;
10+ import * as sessionManager from " ./lib/sessionManager .js" ;
11+ import * as ejs from "ejs" ;
1212
13- await connectMongoose ( ) // top level await thanks to ES modules
14- console . log ( 'Connected to MongoDB.' )
13+ // Usar una forma compatible con entornos de test para obtener __dirname
14+ let dirname ;
15+ try {
16+ dirname = path . dirname ( fileURLToPath ( import . meta. url ) ) ;
17+ } catch ( error ) {
18+ // Fallback para entornos de test
19+ dirname = "." ;
20+ }
1521
16- const app = express ( )
22+ const app = express ( ) ;
1723
18- app . set ( ' views' , ' views' ) // views folder
19- app . set ( ' view engine' , ' html' )
20- app . engine ( ' html' , ( await import ( ' ejs' ) ) . __express )
24+ app . set ( " views" , " views" ) ; // views folder
25+ app . set ( " view engine" , " html" ) ;
26+ app . engine ( " html" , ejs . __express ) ;
2127
22- app . locals . appName = ' NodeApp'
28+ app . locals . appName = " NodeApp" ;
2329
24- app . use ( logger ( ' dev' ) )
25- app . use ( express . urlencoded ( { extended : false } ) )
26- app . use ( express . static ( path . join ( import . meta . dirname , ' public' ) ) )
30+ app . use ( logger ( " dev" ) ) ;
31+ app . use ( express . urlencoded ( { extended : false } ) ) ;
32+ app . use ( express . static ( path . join ( dirname , " public" ) ) ) ;
2733
2834/**
2935 * Application routes
3036 */
31- app . use ( sessionManager . middleware )
32- app . use ( sessionManager . useSessionInViews )
33- app . use ( i18n . init )
34- app . get ( '/' , homeController . index )
35- app . get ( '/login' , loginController . index )
36- app . post ( '/login' , loginController . postLogin )
37- app . get ( '/logout' , loginController . logout )
38- app . get ( '/agents/new' , sessionManager . guard , agentsController . index )
39- app . post ( '/agents/new' , sessionManager . guard , upload . single ( 'avatar' ) , agentsController . postNew )
40- app . get ( '/agents/delete/:agentId' , sessionManager . guard , agentsController . deleteAgent )
37+ app . use ( sessionManager . middleware ) ;
38+ app . use ( sessionManager . useSessionInViews ) ;
39+ app . get ( "/" , homeController . index ) ;
40+ app . get ( "/login" , loginController . index ) ;
41+ app . post ( "/login" , loginController . postLogin ) ;
42+ app . get ( "/logout" , loginController . logout ) ;
43+ app . get ( "/agents/new" , sessionManager . guard , agentsController . index ) ;
44+ app . post ( "/agents/new" , sessionManager . guard , agentsController . postNew ) ;
45+ app . get (
46+ "/agents/delete/:agentId" ,
47+ sessionManager . guard ,
48+ agentsController . deleteAgent
49+ ) ;
4150
4251// Ejemplos
43- app . get ( '/param_in_route/:num?' , homeController . paranInRoute )
44- app . get ( '/param_in_route_multiple/:product/size/:size([0-9]+)/color/:color' , homeController . paranInRouteMultiple )
45- app . get ( '/param_in_query' , homeController . validateParamInQuery , homeController . paramInQuery )
46- app . post ( '/post_with_body' , homeController . postWithBody )
52+ app . get ( "/param_in_route/:num?" , homeController . paranInRoute ) ;
53+ app . get (
54+ "/param_in_route_multiple/:product/size/:size([0-9]+)/color/:color" ,
55+ homeController . paranInRouteMultiple
56+ ) ;
57+ app . get (
58+ "/param_in_query" ,
59+ homeController . validateParamInQuery ,
60+ homeController . paramInQuery
61+ ) ;
62+ app . post ( "/post_with_body" , homeController . postWithBody ) ;
4763
4864// catch 404 and send error
4965app . use ( ( req , res , next ) => {
50- next ( createError ( 404 ) )
51- } )
66+ next ( createError ( 404 ) ) ;
67+ } ) ;
5268
5369// error handler
5470app . use ( ( err , req , res , next ) => {
55-
5671 // manage validation errors
5772 if ( err . array ) {
58- err . message = 'Invalid request: ' + err . array ( )
59- . map ( e => `${ e . location } ${ e . type } "${ e . path } " ${ e . msg } ` )
60- . join ( ', ' )
61- err . status = 422
73+ err . message =
74+ "Invalid request: " +
75+ err
76+ . array ( )
77+ . map ( ( e ) => `${ e . location } ${ e . type } "${ e . path } " ${ e . msg } ` )
78+ . join ( ", " ) ;
79+ err . status = 422 ;
6280 }
6381
64- res . status ( err . status || 500 )
82+ res . status ( err . status || 500 ) ;
6583
6684 // set locals, including error information in development
67- res . locals . message = err . message
68- res . locals . error = process . env . NODEAPP_ENV === ' development' ? err : { }
85+ res . locals . message = err . message ;
86+ res . locals . error = process . env . NODEAPP_ENV === " development" ? err : { } ;
6987
70- res . render ( ' error' )
71- } )
88+ res . render ( " error" ) ;
89+ } ) ;
7290
73- export default app
91+ export default app ;
0 commit comments