首页 > 解决方案 > Jest 在 Typescript 中导入 lodash 函数时遇到了意外的标记

问题描述

我收到一个错误:Jest encountered an unexpected token尝试在我的测试类中编译时:

import isEqual from 'lodash-es/isEqual';
import isEmpty from 'lodash-es/isEmpty';

在我的 package.json 中,我像这样设置我的依赖项:

  "dependencies": {
    "lodash-es": "^4.17.11"
  },
  "devDependencies": {
     ...
     "@types/jest": "^23.3.13",
     "@types/node": "^11.13.4",
     "@types/lodash-es": "^4.17.3",
     "jest": "^25.2.4",
     "ts-jest": "^23.10.4",
     "tslint": "^5.14.0",
     "typescript": "^3.6.4"
     ...
  }

我像这样设置我的笑话配置:

module.exports = {
    clearMocks: true,
    collectCoverageFrom: ['<rootDir>/src/**/*.+(ts)'],
    coverageDirectory: 'coverage',
    coveragePathIgnorePatterns: [
        '/test/',
        '/dist/',
        '<rootDir>/src/index.ts',
        '<rootDir>/src/imports.ts'
    ],
    coverageThreshold: {
        global: {
            branches: 100,
            functions: 100,
            lines: 100,
            statements: 100,
        },
    },
    moduleFileExtensions: ['ts', 'js', 'json', 'node'],
    preset: "ts-jest/presets/js-with-ts",
    rootDir: '.',
    testEnvironment: 'node',
    testMatch: ['<rootDir>/test/**/*.test.(js|ts)'],
    transform: {
        '\\.(js|ts)$': '<rootDir>/node_modules/babel-jest'
    },
    transformIgnorePatterns: [
        "node_modules/(?!(lodash-es)/)"
    ]
  };

正如其他帖子所建议的那样,我尝试添加变换和变换IgnorePatterns。我也尝试过使用 jest --no-cache,并删除 node_modules、package-lock.json,然后使用 tsc 重建,并使用 NodeJS 12。但是,我仍然遇到同样的错误。有什么我配置错误吗?

标签: javascripttypescriptjestjs

解决方案


我开玩笑的配置有几个错误:

    transform: {
            '\\.(js|ts)$': 'ts-jest',
    },

我还需要将预设更新为:preset: 'ts-jest',. 我正在混合和匹配来自不同来源的配置,这导致了奇怪的编译错误。更新配置解决了我的问题。


推荐阅读