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

MERN栈应用更新Bus时遇Not authorized, no token错误求助

公交票务系统Bus更新接口授权失败问题排查与解决方案

问题根源

你已经精准定位到核心问题:busService.js中axios.put的参数顺序错误。axios.put的标准调用格式为axios.put(url, 请求数据, 配置对象),但你误将包含Authorization头的配置对象放在了第二个参数位置,请求数据被挤到了第三个参数。这导致请求头并未被正确附加到HTTP请求中,后端authMiddleware.js的protect中间件无法检测到JWT Token,因此抛出"Not authorized, no token"错误。

解决方案

修正busService.js里updateBus方法的axios.put参数顺序,将请求数据放在第二个参数,配置对象(含Authorization头)放在第三个参数:

错误代码示例

// 错误的axios.put调用顺序
export const updateBus = (busId, busData, token) => {
  const config = {
    headers: {
      Authorization: `Bearer ${token}`
    }
  };
  // 参数顺序错误:url, config, busData
  return axios.put(`/api/buses/${busId}`, config, busData);
};

修正后的正确代码

// 正确的axios.put调用顺序
export const updateBus = (busId, busData, token) => {
  const config = {
    headers: {
      Authorization: `Bearer ${token}`
    }
  };
  // 参数顺序:url, busData, config
  return axios.put(`/api/buses/${busId}`, busData, config);
};

验证步骤

  1. 保存修正后的代码,重启前端开发服务
  2. 执行Bus更新操作,打开浏览器开发者工具(F12)的Network面板
  3. 找到对应更新接口的请求,检查Request Headers中是否存在Authorization: Bearer [你的Token]字段
  4. 确认后端接口正常处理更新请求,不再抛出授权错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:52:36