第26行开始,想判断status状态码,错误(不是200)就抛出一个错误的promise,但是抛出的如右边所示,直接停止了运行,跟着教学视频里应该是控制台抛出不停止运行,并且会轻提示(messgae)
邦邦!
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
从你给出的代码和描述来看,你在axios响应拦截器中判断状态码并抛出错误,但遇到了“Cannot read properties of undefined”的错误。这个错误通常意味着你试图访问一个未定义对象的属性。在你的代码中,你试图访问response.data.messgae
,这可能是问题所在。你需要确保response.data
不是一个空对象或者未定义,然后再访问它的属性。你可以在抛出错误之前添加一些检查来避免这个问题。
以下是一个改进的代码示例:
instance.interceptors.response.use(function(response) {
console.log(response.data.status);
if (response.data && response.data.status !== 200) {
Toast(response.data.messgae); // 确保你的Toast函数能够正确处理传入的数据
return Promise.reject(response.data); // 注意这里传入的是整个响应数据,而不是messgae属性
}
return response; // 正常响应的处理逻辑
}, function(error) {
// 处理响应错误的逻辑
console.log('Error occurred:', error);
return Promise.reject(error); // 直接拒绝错误
});
这个代码段做了以下几个改动:
response.data.messgae
之前检查了response.data
是否存在。这样可以避免尝试访问未定义对象的属性导致的错误。messgae
属性。根据你的代码逻辑,你可能需要整个响应数据来进行后续处理。如果你只需要错误信息,你可以调整这部分代码来满足你的需求。请尝试这个修改后的代码,看看是否能解决你的问题。如果问题仍然存在或者有其他问题,请提供更多信息以便我能更准确地帮助你解决问题。