javascript - 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。但是,我仍然遇到同样的错误。有什么我配置错误吗?
解决方案
我开玩笑的配置有几个错误:
transform: {
'\\.(js|ts)$': 'ts-jest',
},
我还需要将预设更新为:preset: 'ts-jest',
. 我正在混合和匹配来自不同来源的配置,这导致了奇怪的编译错误。更新配置解决了我的问题。
推荐阅读
- python - 我的 django 网站在生产中说“我们很抱歉,但出了点问题”
- asp.net-core - 表单提交返回一个空白页
- python - 使用 Gmail API 中的确认码验证待处理的转发地址
- angular - 如何使用 Angular 7 路由 Laravel 应用程序
- javascript - Nock 在我的测试中没有拦截请求
- python - 以特殊方式从数据库中获取json
- typescript - Typescript 泛型 - 将函数参数和返回类型限制为相同类型并从使用中推断类型
- c++ - 对这两个赋值运算符之间的区别感到困惑
- javascript - 如何在反应应用程序中从本地浏览器存储中存储和检索字符串?
- sql - 为单个用户选择不同的 MAX NoteID