node.js - Adonis 检测到未处理的 Promise 拒绝,这可能会导致生产中出现不良行为
问题描述
您在运行状况检查服务中使用 adonisJS,并尝试根据服务中的轴发出两个请求。我收到来自 Adonis 的警告“Adonis 检测到未处理的承诺拒绝,这可能会导致生产中出现不良行为”以及我的调度程序每 3 分钟监控一次此服务。我的电话有什么问题,为什么阿多尼斯会抱怨它?
我的策略是在没有登录的情况下为一条路线发布帖子,并且在获取已记录的路线之后立即发布。我从帖子中获取请求令牌并在请求标头中播放它,但阿多尼斯给了我这个警告。它是什么?
App/Services/JaiminhoService
try {
await axios.post(Env.get('JAIMINHO_URL'), data).then(response => {
if(response.status === 200) {
try {
await axios.get(`${Env.get('JAIMINHO_URL')}/push/schedule/`, {
headers: { Authorization: `Bearer ${response.data?.token}` }
}).then(response => {
if(response.status === 200) {
return {
status: response.status,
message: response.statusText,
service_name: jaiminho,
date,
}
}
})
} catch (error) {
return 'Error'
}
}
else {
//send mail
}
})
return
} catch (error) {
return {
message: 'Error! Please check Jaiminho service.',
service_name: jaiminho,
date
}
}
警告:Adonis 检测到未处理的 Promise 拒绝,这可能会导致生产中出现不良行为。要停止此警告,请在 promise 上使用 catch() 或将 await 调用包装在 try/catch 中。
解决方案
由于您使用的是 async/await,因此您可以避免嵌套.then()
调用。
我建议你把你的代码改成这样,看看会发生什么:
try {
const postResponse = await axios.post(Env.get('JAIMINHO_URL'), data);
if (postResponse.status === 200) {
const getResponse = await axios.get(`${Env.get('JAIMINHO_URL')}/push/schedule/`, {
headers: { Authorization: `Bearer ${postResponse.data?.token}` }});
if (getResponse.status === 200) {
return {
status: response.status,
message: response.statusText,
service_name: jaiminho,
date
};
}
} else {
//send mail
}
} catch (error) {
return {
message: 'Error! Please check Jaiminho service.',
service_name: jaiminho,
date
};
}
推荐阅读
- node.js - v8 引擎:生成的每个字节码点火是否在 CodeStubAssembly 中都有相应的字节码处理程序?
- python - IndexError:列表索引超出范围 Python。不使用 sort 或 sorted:
- angular - 使用函数来选择继承自 Angular 中基础服务的服务?
- asp.net-mvc - 模型和视图模型之间传递错误?
- python - python:使用 numpy 数组输入调用 c++
- google-cloud-platform - (gcloud.tasks.queues.create) PERMISSION_DENIED: 'locations/asia-south1' 的权限被拒绝
- ruby-on-rails - Rails / Ruby方法/正则表达式增加字符串的数字部分?
- go - 总是去获取一个预发布版本
- python - 每次循环运行时在 Django 模板中显示值
- java - 如何查找和使用每个 Java 支持的平台默认字符集?