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

Node+TypeScript环境下Jest测试报错:TypeError: x is not a function

解决Jest测试TypeScript函数时的TypeError: x is not a function问题

问题原因

你的x.ts使用了命名导出(export function x),但测试文件用require导入时,默认获取的是整个模块对象,而非直接的函数。此时变量x是一个包含x属性的对象,直接调用x(1,2)自然会报错“不是函数”。

解决方法

方法1:修改测试文件的导入方式(推荐)

将测试文件的导入语句改为解构导入,提取出命名导出的函数:

const { x } = require('../functions/x');

describe("Running test", () => {
  test('Should return results', () => {
    const result = x(1,2)
    expect(result).toBe(3)
  });
});

如果你的项目配置了ES模块支持,也可以用ES模块语法导入:

import { x } from '../functions/x';

describe("Running test", () => {
  test('Should return results', () => {
    const result = x(1,2)
    expect(result).toBe(3)
  });
});

方法2:修改TS文件的导出方式为默认导出

将x.ts中的命名导出改为默认导出:

export default function x(a: number, b: number) {
  return a + b
}

此时测试文件的原导入语句即可正常使用:

const x = require('../functions/x');

额外注意事项

  • 确保你的Jest配置正确处理TypeScript,比如安装了ts-jest并在jest.config.js(或jest.config.ts)中指定preset: 'ts-jest'。
  • 检查tsconfig.json中的module选项,若使用CommonJS则对应require语法,若使用ESNext则对应import语法,保持导入导出风格一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:15:44