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

Node.js与React跨实例部署后登录出现req.get参数缺失错误

问题排查:Node.js身份验证中间件报错TypeError: name argument is required to req.get

报错信息

TypeError: name argument is required to req.get
    at IncomingMessage.header (/home/tech/Desktop/REST/node_modules/express/lib/request.js:67:11)
    at module.exports (/home/tech/Desktop/REST/middleware/is-auth.js:5:28

相关代码

身份验证中间件

//extract token from frontend/client
module.exports = (req, res, next) => {
    const authHeader = req.get('');
    if (!authHeader) {
        const error = new Error('Not Authenticated');
        error.statusCode = 401;
        throw error;
    }
    const token = authHeader.split(' ')[1];
    let decodedToken;
    try {
        decodedToken = jwt.verify(token, 'secret'); //secret is used to validate token
    } catch (err) {
        err.statusCode = 500;
        throw err;
    }
}

前端请求代码

//pass token to the server
fetch('http://localhost:8080/feed/posts?page=' + page, {
  headers: {
    Authorization: 'Bearer ' + this.props.token
  }
})

问题原因与修复方案

  • 错误原因:req.get('')未传入请求头字段名,Express的req.get()方法必须指定要获取的请求头名称,否则会触发该TypeError。前端是通过Authorization头传递token的,中间件却没有指定这个字段。
  • 修复步骤:
    1. 将req.get('')修改为req.get('Authorization'),匹配前端传递的请求头。
    2. 补充调用next(),否则请求会挂起无法进入后续路由处理。
    3. 可选:将解码后的token信息挂载到req对象,方便后续业务逻辑使用。

修改后的中间件代码:

//extract token from frontend/client
module.exports = (req, res, next) => {
    const authHeader = req.get('Authorization');
    if (!authHeader) {
        const error = new Error('Not Authenticated');
        error.statusCode = 401;
        throw error;
    }
    const token = authHeader.split(' ')[1];
    let decodedToken;
    try {
        decodedToken = jwt.verify(token, 'secret');
    } catch (err) {
        err.statusCode = 500;
        throw err;
    }
    // 挂载解码后的用户信息到req,供后续路由使用
    req.userId = decodedToken.userId;
    next();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:55:17