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" ;
12
12
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
+ }
15
21
16
- const app = express ( )
22
+ const app = express ( ) ;
17
23
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 ) ;
21
27
22
- app . locals . appName = ' NodeApp'
28
+ app . locals . appName = " NodeApp" ;
23
29
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" ) ) ) ;
27
33
28
34
/**
29
35
* Application routes
30
36
*/
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
+ ) ;
41
50
42
51
// 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 ) ;
47
63
48
64
// catch 404 and send error
49
65
app . use ( ( req , res , next ) => {
50
- next ( createError ( 404 ) )
51
- } )
66
+ next ( createError ( 404 ) ) ;
67
+ } ) ;
52
68
53
69
// error handler
54
70
app . use ( ( err , req , res , next ) => {
55
-
56
71
// manage validation errors
57
72
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 ;
62
80
}
63
81
64
- res . status ( err . status || 500 )
82
+ res . status ( err . status || 500 ) ;
65
83
66
84
// 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 : { } ;
69
87
70
- res . render ( ' error' )
71
- } )
88
+ res . render ( " error" ) ;
89
+ } ) ;
72
90
73
- export default app
91
+ export default app ;
0 commit comments