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

React+Flask应用/register收JSON正常但/userlookup报TypeError错误

问题原因

你报错的核心原因是前端调用JSON.stringify的语法错误:
JSON.stringify的第一个参数才是需要序列化为JSON的目标值,后续参数分别为替换函数/数组、缩进空格数,不会自动把多个入参拼接成对象。

你登录代码里写的JSON.stringify(username, password),实际上只会把第一个参数username的值序列化输出。比如你传的username是"zhangsan",最终发往后端的请求体就是纯字符串"zhangsan",不是你预期的JSON对象。
Flask解析后request.json就是字符串类型,你用request.json['username']这种字典索引方式访问字符串,自然会触发TypeError: string indices must be integers报错。

另外你说注册路由可以正常运行,实际上注册代码里的JSON.stringify(username, email, password)写法也是错误的,能正常运行大概率是你实际测试时修改过相关代码、或是传入的username本身就是包含所有字段的对象,属于巧合正常。

修复方案

1. 修复前端登录代码

把logitin方法里的body行修改为包裹对象的形式:

body: JSON.stringify({username, password}),

2. 同步修复前端注册代码(避免后续隐藏问题)

把RegisterUser方法里的body行修改为:

body: JSON.stringify({username, email, password, base_city, about_me}),

3. 后端可选优化

  • 登录路由不需要支持GET请求,可把@app.route("/userlookup", methods=['GET','POST'])改为@app.route("/userlookup", methods=['POST']),避免GET请求访问时触发无json的报错
  • 给userlookup函数的所有分支加明确返回值,Flask要求路由函数必须返回可作为响应的内容,否则会触发额外报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:39:02