Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
Enrutador expreso de nodo mecanografiado y segundo argumento. Mecanografiado-eslint/no-misused-promises

¿Qué debo hacer con la función de registro para arreglar @typescript-eslint/no-misused-promises . La única forma en que encontré cómo solucionar este problema es escribir por eslint.

 "@typescript-eslint/no-misused-promises": [ "error", { "checksVoidReturn": false } ]

Pero me gustaría resolver este problema como lo requiere eslint. ¿Algunas ideas?

 import PromiseRouter from "express-promise-router"; import { login, registration } from './authController'; const router = PromiseRouter(); > ESLint: Promise returned in function argument where a void return was > expected.(@typescript-eslint/no-misused-promises) router.post('/registration', registration);

Aquí está la función completa de registro.

 export async function registration(req: TreqBodyReg, res: Response): Promise<void> { try { const { email, password } = req.body; const candidate = await ModelUser.findOne({ email }) as TuserFromDB; if (candidate) { res.status(400).json({ message: `There is user with email ${email}` }); return; } const hashPassword = bcrypt.hashSync(password, 7); const user = new ModelUser({ email, password: hashPassword }); await user.save(); res.status(200).json({ message: `The user by email ${email} was successfully registered` }); } catch (err: unknown) { res.status(400).json({ message: err }); } };
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Es indirecto, pero resolví el problema de esta manera.

 async function registerUser(req: TreqBodyReg, res: Response): Promise<void> { const { email, password } = req.body; const candidate = await ModelUser.findOne({ email }) as TuserFromDB; if (candidate) { res.status(400).json({ message: `There is user with email ${email}` }); return; } const hashPassword = bcrypt.hashSync(password, 7); const user = new ModelUser({ email, password: hashPassword }); await user.save(); res.status(200).json({ message: `The user by email ${email} was successfully registered` }); } export function registration(req: TreqBodyReg, res: Response): void { registerUser(req, res).catch((err: unknown) => { res.status(400).json({ message: err }); }); }
over 4 years ago · Santiago Trujillo Denunciar

0

Encontré el mismo problema usando el Router predeterminado y lo resolví haciendo esto:

 router.get("/", function(request: Request, response: Response): void { void (async function(): Promise<void> { // do your asychronous work here response.json(/* put your payload here */); })(); });

Admito que no me gusta el repetitivo adicional, pero es la mejor respuesta que he encontrado hasta ahora.

La (async function(): Promise<void> {...})(); part es solo una función autoinvocada asíncrona (tenga en cuenta el extra () al final). El void frente a él elimina el tipo de devolución para que ESLint sepa que realmente tiene la intención de ignorar la promesa devuelta. Sin él, obtienes un error de "sin promesas flotantes". Por supuesto, eso significa que usted está asumiendo la responsabilidad de usar try-catch internamente para lidiar con los errores...

Entonces, el resultado final con este enfoque es que la plantilla adicional le permite usar async/await en el Express Router predeterminado.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda