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

supertest访问res.body报错Cannot read properties of undefined

错误根因

Uncaught TypeError: Cannot read properties of undefined (reading 'body') 是因为接口请求触发错误时,回调函数入参res为undefined,你的代码没有做错误分支拦截,不管请求成功失败都会执行console.log(res.body),访问空值的属性就会抛错。

具体问题点
  • 没有对请求错误做拦截处理:当前代码打印err后没有中断执行,只要请求失败(网络异常、token失效、接口路径错误、服务端报错等场景),res为空时后续代码依然会运行
  • 路径写法不规范:初始化supertest时传入的baseUrl结尾带了多余斜杠,get请求的路径没加开头斜杠,部分场景下会出现路径拼接错误,直接导致请求404
  • 导入项不全:ESModule模式下运行mocha,只导入describe没导入it也可能导致测试用例运行异常
修复后可运行代码
import { describe, it } from "mocha";
import supertest from "supertest";
import { expect } from "chai";

// 去掉baseUrl结尾多余斜杠
const request = supertest('https://gorest.co.in/public/v2');
const api_token = '45faa1e4b06b3cc1d5ecfbe639235376838cf638c85f88cb9bcc04e954bbf77f';

describe('GET /user' , () =>{
  it('fetching user details', (done) =>{
    // 路径开头补/,保证路径拼接正确
    request.get(`/users?access-token=${api_token}`).end((err, res) =>{
      // 存在错误直接终止用例,把错误抛给mocha展示
      if (err) return done(err);

      console.log(res.body);  
      done();
    })
  })
})

修复后如果依然请求失败,控制台会直接打印具体的错误信息(比如401鉴权失败、404接口不存在、超时等),顺着错误信息排查对应问题即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:54:09