如何以ES6模块方式使用Supertest?解决Jest测试API导入报错
解决Supertest中request导入的SyntaxError问题
你遇到的问题是因为Supertest v4及以上版本中,request是默认导出而非命名导出,所以用import { request } from "supertest";这种解构导入的方式会找不到对应导出项。
正确的导入方式
直接使用默认导入:
import request from "supertest";
示例:结合Jest测试API
import request from "supertest"; import app from "../path/to/your/app"; // 导入你的Express/Koa应用实例 test("测试GET接口返回状态码", async () => { const res = await request(app).get("/your/api/path"); expect(res.statusCode).toBe(200); });
可选:别名方式实现类似命名导入的写法
如果习惯解构的写法,可以通过别名将默认导出命名为request:
import { default as request } from "supertest";
额外检查点
- 查看
package.json中的supertest版本,确认是v4+;如果是v3及以下旧版本,虽然支持命名导入,但建议升级到新版本以获得更好的兼容性和安全性。
内容的提问来源于stack exchange,提问作者GenesysRTA
相关产品推荐
相关产品推荐

