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

React项目运行Jest测试出现Cannot find module错误求助

解决Jest无法解析Milkdown ESM模块的问题

针对你遇到的Cannot find module '@milkdown/core'错误,核心原因是Jest默认以CommonJS模式运行,而Milkdown是纯ESM模块,需要调整Jest和TypeScript配置来适配。以下是具体解决方案:

1. 更新Jest配置

修改你的jest.config.ts,添加转译ESM模块的相关配置:

import type { Config } from 'jest'

const config: Config = {
  preset: 'ts-jest',
  testEnvironment: 'jsdom',
  setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
  injectGlobals: true,
  // 允许Jest转译@milkdown开头的ESM模块(默认跳过node_modules)
  transformIgnorePatterns: ['/node_modules/(?!@milkdown)/'],
  // 采用NodeNext模块解析规则,适配ESM
  moduleResolution: 'NodeNext',
  // 支持的文件扩展名,覆盖默认配置确保ESM文件被识别
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
  // 配置ts-jest以ESM模式转译TypeScript文件
  transform: {
    '^.+\\.(ts|tsx)$': ['ts-jest', { useESM: true }],
  },
}

export default config

2. 同步TypeScript配置

调整tsconfig.json,确保模块解析规则与Jest一致:

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "jsx": "react-jsx",
    "strict": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src", "jest.setup.ts"]
}

3. (可选)Mock Milkdown模块优化测试

如果你的测试不需要实际渲染编辑器功能,可通过Mock模块避免初始化开销和DOM依赖问题:

import React from 'react'
import { render } from '@testing-library/react'
import MilkdownEditor from '../src/MilkdownEditor'

// Mock @milkdown/core核心方法
jest.mock('@milkdown/core', () => ({
  makeEditor: jest.fn(() => ({
    create: jest.fn(),
  })),
}))

// Mock Milkdown插件(如果你的编辑器使用了插件)
jest.mock('@milkdown/preset-commonmark', () => ({
  commonmark: jest.fn(),
}))

test('test milkdown editor renders without errors', () => {
  render(<MilkdownEditor />)
})

配置说明

  • transformIgnorePatterns: 解除Jest对@milkdown包的转译忽略,让ts-jest能处理其ESM代码。
  • moduleResolution: NodeNext: 统一Jest和TypeScript的模块解析逻辑,适配ESM的导入导出规则。
  • ts-jest的useESM选项: 让ts-jest生成ESM格式的转译代码,与Milkdown的模块格式兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:43:21