Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda