我正在设置“UnhandledPromiseRejectionWarning:未处理的承诺拒绝。”错误导致我无法执行上述简单请求:
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))
})
});
我无法理解为什么会发生这种情况,因为我正在使用“.catch()”方法正确处理错误。如何正确执行此请求?
答案 0 :(得分:2)
警报,因此错误可能来自.catch
尝试使用此代码:
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)
})
如果你想要更“现代”的方式
// 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)
}
});
答案 1 :(得分:1)
alert
是一个宿主方法,可以在浏览器环境中找到,因此在node.js中不存在。
.then
catch
,catch
,catch
。要尝试处理这种情况,请分别使用console.log
和console.error
更改每个提醒:
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)
})