axios请求无法读取未定义的属性



我正试图向服务器发出后端请求,我继续得到response.data返回,这是一些HTML作为字符串,表示TypeError: Cannot read property of undefined

我需要传递一个data对象,看起来像这样:

const data = {
visitorId,
patientId: oldPatientId,
doctorId
}

,我需要传递一个json web令牌,像这样:

const userJWT = jwt.sign(
{
_id: visitorId,
refreshCount: 0
},
this.localConfig.spyrt.jwtSecret
)

和标题看起来像这样:

const headers = {
'Content-Type': 'application/json',
'Authorization': `Bearer ${userJWT}`
}

我在异步方法中这样做:

async jwtTest(visitorId: number, oldPatientId: number, doctorId: number): Promise<void> {
const data = {
visitorId,
patientId: oldPatientId,
doctorId
}
const userJWT = jwt.sign(
{
_id: visitorId,
refreshCount: 0
},
this.localConfig.spyrt.jwtSecret
)

const headers = {
'Content-Type': 'application/json',
'Authorization': `Bearer ${userJWT}`
}
if (this.localConfig.spyrt.active) {
const dto = await axios.post(visitURL, data, {headers}).then((response) => {
console.log(response.data);
}).catch((error) => {
console.log(error);
});
}
}

我担心我的axios代码没有正确设置。我得到无法读取属性未定义和500statusCode错误。

我已经尽我所能查阅了axios文档。有人发现我的设置有什么问题吗?

我尝试了这个实现:

if (this.localConfig.spyrt.active) {
await axios.post(visitURL, data, {headers}).then(function(response) {
console.log(JSON.stringify(response.data));
}).catch(function(error) {
console.log(error);
})
}

和这个我得到完全相同的响应

我最能理解这个API的是之前工程师的代码,它的设置看起来像这样:

try {
let response = await fetch(visitURL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + acct.jwt
},
body: JSON.stringify(visit)
});
if (response.ok) {
let result = await response.json();
callback(result);
} else {
throw new Error('Model: createVisit failed!');
}
} catch (error) {
console.log(error);
}

您可以使用async/await或promise,但不能在同一调用中同时使用这两种方法。最快的修复方法是:

try {
const dto = await axios.post(visitURL, data, {headers})
const data = dto.data
console.log(data)
} catch (err) {
console.log(error)
}

TLDR:确保您正确访问您的响应对象

我遇到了这篇文章,我的问题最终是因为我错过了一个'。数据在我的对象访问

I had this (wrong)

axios
.post(`${process.env.VUE_APP_ROOT_URL}/score/`, {'day':today})
.then(response => {
response.categories.forEach(element => console.log(element.score));
})

vs

axios
.post(`${process.env.VUE_APP_ROOT_URL}/score/`, {'day':today})
.then(response => {
response.data.categories.forEach(element => console.log(element.score));
})

相关内容

  • 没有找到相关文章

最新更新