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

770
Visualizações
What could this be about? [TsLint Error: "Promises must be handled appropriately"]

I'm doing some basic asynchronous operations using async/await in TypeScript but TSLint is throwing mysterious error messages for these two functions below. Has anyone encountered these errors before? On the error output the governing rule is not mentioned, so I don't understand what's causing these. Any ideas would be greatly appreciated.

The main request:

import * as rp from 'request-promise'

export function getRequest(address: rp.Options): rp.RequestPromise {
  return rp(address)
}

Exported async function:

export async function getStatus(message: Message) {
  try {
    const res = await getRequest(address)
    if (res.ready) {
      message.reply('...')
    } else {
      message.reply('...')
    }
  } catch (err) {
    message.reply(err)
  }
}

This gets: Promises must be handled appropriatelyand await of non-Promise for line #3.

The simple function that uses this export is:

client.on('message', message => {
  if (message.content === 'green') {
    getStatus(message)
  }
})

This also gets Promises must be handled appropriately.

Additional information:

Even though the error message doesn't mention it, this seems to be the governing rule for Promises must be handled appropriately: https://palantir.github.io/tslint/rules/no-floating-promises/

And this Issue mentions await of non-Promise: https://github.com/palantir/tslint/issues/2661

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

That's a crappy error message. A better one might be,

every expression of type Promise must end with a call to .catch or a call to .then with a rejection handler (source).

So, for example, if you do

PromiseFunction()
  .catch(err => handle(err))
  .then(() => console.log('this will succeed'))

then you will still have a tslint problem, because the type of .then(...) is a promise, and it has to end with a catch. The fix would be appending a .catch clause, for example,

PromiseFunction()
  .catch(err => handle(err))
  .then(() => console.log('this will succeed'))
  .catch(() => 'obligatory catch')

or just disabling tslint for that line via:

PromiseFunction()
  .catch(err => handle(err))
  // tslint:disable-next-line:no-unsafe-any
  .then(() => console.log('this will succeed'))

Alternatively, you could reverse the order of the .then and .catch statements. However, that stops the .then from executing if an error does occur, which you presumably want if you encountered this problem.

over 4 years ago · Santiago Trujillo Relatório

0

Sometimes you might want to call the promise, but you don't need to do anything with the response. A route change or something else.

so instead of:

promiseFunction().then().catch()
try/catch async/await

you can do:

void promiseFunction();

As per the comments on the correct use of void please read: IgnoreVoid

Use at your own convenience :)

over 4 years ago · Santiago Trujillo Relatório

0

I have got the same exception when i have created firebase-function using firebase-tool

const ref = admin.database().ref("path/to/database/object");

ref.once("value").catch(error =>{  // line 22
    response.send( error() );
}).then( snapshot =>{
    response.send( snapshot.val );
})

This code doesn not compiled and return

ERROR: /src/index.ts[22, 5]: Promises must be handled appropriately

I have changed the places of catch and then.

ref.once(...).then(...).catch(...)

This code is work, i am sorry but I don't have any explanation

So much amazing when app return the some error without catch block even according firebase doc not mentioned that catch is required.

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