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

导入TS模块时Angular单元测试失败,无法找到@ctrl/ngx-emoji-mart

解决Jest无法识别@ctrl/ngx-emoji-mart模块的问题

针对Angular单元测试中Jest报错Cannot find module '@ctrl/ngx-emoji-mart'的问题,可通过以下两种方案解决:

方案一:调整Jest配置,直接编译该包的TS/MJS文件

由于该包仅提供TS和MJS文件,且Jest默认不编译node_modules内的模块,需修改配置让Jest处理该包:

  1. 修改jest.config.js,允许转换@ctrl/ngx-emoji-mart
    添加transformIgnorePatterns,排除该包以让Jest对其进行转换:

    module.exports = {
      // 其他配置...
      transformIgnorePatterns: [
        'node_modules/(?!@ctrl/ngx-emoji-mart)'
      ],
    };
    
  2. 配置TS和MJS的转换器
    用ts-jest处理TS文件,babel-jest处理MJS文件,更新transform配置:

    module.exports = {
      // 其他配置...
      transform: {
        '^.+\\.(ts|tsx)$': 'ts-jest',
        '^.+\\.mjs$': 'babel-jest'
      },
      moduleFileExtensions: ['ts', 'js', 'mjs', 'json'],
    };
    
  3. 配置Babel支持ES模块转CommonJS
    在项目根目录创建或修改babel.config.json,添加预设:

    {
      "presets": [
        ["@babel/preset-env", { "targets": { "node": "current" } }]
      ]
    }
    

    确保已安装依赖:

    npm install @babel/preset-env babel-jest --save-dev
    

方案二:手动编译@ctrl/ngx-emoji-mart为JS并补全main字段

如果配置Jest转换无效,可手动编译该包并修正其package.json:

  1. 进入包目录并安装编译依赖

    cd node_modules/@ctrl/ngx-emoji-mart
    npm install
    
  2. 编译TS文件为CommonJS格式
    若包内已有build命令,直接运行:

    npm run build
    

    若无build命令,手动创建tsconfig.json:

    {
      "compilerOptions": {
        "target": "ES2020",
        "module": "CommonJS",
        "outDir": "./dist",
        "strict": true,
        "esModuleInterop": true
      },
      "include": ["src/**/*"]
    }
    

    然后执行编译:

    npx tsc
    
  3. 补全package.json的main字段
    修改该包的package.json,添加指向编译后入口文件的main字段:

    "main": "./dist/index.js"
    
  4. 用patch-package保存修改(可选)
    为避免下次npm install覆盖修改,使用patch-package生成补丁:

    # 回到项目根目录
    cd ../../
    npm install patch-package --save-dev
    npx patch-package @ctrl/ngx-emoji-mart
    

    后续重装依赖时,补丁会自动应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:10:26