You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用UserProfileApi.putProfile报then未定义错误及返回true仍报错的解决咨询

问题原因与修复方案

嘿,这个错误我太熟悉啦!你遇到的Cannot read property 'then' of undefined问题,本质原因是你的UserProfileApi.putProfile函数没有返回Promise对象,导致调用它的时候无法链式调用.then()。

具体问题分析

看你提供的UserProfileApi.js里的axios请求代码:

axios.put(`${envApiUrl}/UserProfile/personalData`, formData, config).then(response => { console.log('win', response); return 'winner'; });

这段代码里,axios.put()本身会返回一个Promise,但你没有把这个Promise返回出去——你的putProfile函数执行完这段代码后,默认返回了undefined,所以当你在页面里调用UserProfileApi.putProfile(...).then(...)时,相当于在undefined上调用.then(),自然就抛出TypeError了。

修复步骤

只需要给axios.put()前面加上return,让putProfile函数返回这个Promise即可:

// 修复后的UserProfileApi.js代码
return axios.put(`${envApiUrl}/UserProfile/personalData`, formData, config).then(response => { 
  console.log('win', response); 
  return 'winner'; // 这里可以返回你需要传递给调用者的数据,比如response.data或者自定义内容
});

额外建议

为了避免出现未捕获的Promise错误,建议在调用的时候加上.catch()来处理异常情况:

// 修复后的页面调用代码
UserProfileApi.putProfile(
  this.state.selectedShoe, 
  this.state.selectedWear, 
  this.state.dreams, 
  this.state.newAvatarPhoto, 
  this.state.Sports
)
.then(response => { 
  console.log(response); 
})
.catch(error => {
  console.error('更新个人资料请求出错:', error);
});

这样修改后,你的调用代码就能正常拿到Promise的返回结果,不会再出现undefined相关的错误啦~

内容的提问来源于stack exchange,提问作者stackerLoki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:59:28