Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

232
Views
TypeError: no se puede leer la propiedad 'authService' de undefined con TypeDi

Creo una clase AuthRouter:

 import { Router } from 'express' import Container, { Service } from 'typedi' import AuthenticationController from './index' @Service() class AuthenticationRouter { constructor (private readonly authenticationController: AuthenticationController) {} getRouter () { const router = Router() router.get('/auth/url', this.authenticationController.getAuthUrl) return router } } const authRouter = Container.get(AuthenticationRouter) const routes = authRouter.getRouter() export default routes

AuthController.ts:

 import { Request, Response } from 'express' import { Service } from 'typedi' import AuthenticationService from './authentication-service' @Service() class AuthenticationController { constructor (private readonly authService: AuthenticationService) {} async getAuthUrl (req: Request<{}, {}, {}, {redirect: string}>, res: Response) { return res.redirect(this.authService.generateAuthenticationUrl(req.query.redirect)) } } export default AuthenticationController

Servicio de autenticación:

 import { OAuth2Client } from 'google-auth-library' import { google, oauth2_v2 } from 'googleapis' import { Service } from 'typedi' @Service() class AuthenticationService { private oauth2Client: OAuth2Client; private auth: oauth2_v2.Oauth2 constructor () { this.oauth2Client = new google.auth.OAuth2({ clientId: process.env.CLIENT_ID, clientSecret: process.env.CLIENT_SECRET, redirectUri: process.env.REDIRECT_URI }) this.auth = google.oauth2({ version: 'v2', auth: this.oauth2Client }) } generateAuthenticationUrl (redirect: string) { const url = this.oauth2Client.generateAuthUrl({ scope: ['email', 'profile'], access_type: 'offline', state: redirect || '/' }) return url } } export default AuthenticationService;

Cuando ejecuto el servidor, me sale este error:

 (node:4470) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'authService' of undefined

Declaré el contenedor para el enrutador de autenticación, pero creo que el AuthController no está inyectado. ¿Cómo puedo arreglar eso?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Actualicé el método getRouter para solucionar el problema:

 getRouter () { const router = Router() router.get('/google/url', (req: Request<{}, {}, {}, {redirect: string}>, res) => this.authenticationController.getAuthUrl(req, res)) return router }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!