Recibo un error "UnhandledPromiseRejectionWarning: Rechazo de promesa no controlada". que no me permite realizar esta simple solicitud anterior:
app.get('/', function (req, res) {
const GITHUB_AUTH_ACCESSTOKEN_URL = 'https://github.com/login/oauth/access_token'
const CLIENT_ID = '123'
const CLIENT_SECRET = '456'
axios({
method: 'post',
url: GITHUB_AUTH_ACCESSTOKEN_URL,
data: {
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET
}
})
.then(function (response) {
alert('Sucess ' + JSON.stringify(response))
})
.catch(function (error) {
alert('Error ' + JSON.stringify(error))
})
});
No puedo entender por qué sucede esto porque estoy manejando correctamente el error con el método ".catch ()". ¿Cómo puedo realizar esta solicitud correctamente?
2 respuestas
Alerta no existe de forma nativa en nodejs, por lo que el error probablemente provenga de .catch
Prueba en su lugar este código:
axios({
method: 'post',
url: GITHUB_AUTH_ACCESSTOKEN_URL,
data: {
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET
}
})
.then(function ({data}) {
console.log('Success ' + JSON.stringify(data))
})
.catch(function (error) {
console.log('Error ' + error.message)
})
Si quieres un poco más "moderno"
// notice the async () =>
app.get('/', async (req, res) => {
const GITHUB_AUTH_ACCESSTOKEN_URL = 'https://github.com/login/oauth/access_token'
const CLIENT_ID = '123'
const CLIENT_SECRET = '456'
try {
const { data } = await axios({
method: 'post',
url: GITHUB_AUTH_ACCESSTOKEN_URL,
data: {
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET
}
})
console.log(data)
} catch (err) {
console.error(err.message)
}
});
alert
es un método de host, que se puede encontrar en el entorno del navegador, por lo que no existe en node.js.
- primero arroja un error en
.then
- queda atrapado en
catch
, - se lanza de nuevo ahora dentro de
catch
, - ya que no hay nada para capturar el último
catch
, es manejado por el manejador de rechazo de promesa global.
Para tratar de manejar la situación, comience cambiando cada alerta con console.log
y console.error
respectivamente:
axios({
method: 'post',
url: GITHUB_AUTH_ACCESSTOKEN_URL,
data: {
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET
}
})
.then(function (response) {
console.log('Success ' + JSON.stringify(response))
})
.catch(function (error) {
console.error('Error ' + error.message)
})
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.