Jest无法解析模块内的导入令牌

时间:2017-08-25 20:08:15

标签: typescript jest

我的应用程序的结构使用了package.json中单独依赖项的核心代码。 例如,我的单元测试文件里面有一个import

import {SomeComponent} from 'core-pr/base-components/baseComponent';

其中core-pr位于node_modules/core-pr目录中。 并且baseComponent.ts文件已成功加载并解析得很好。但在baseComponent.ts内部存在相对依赖性,如

import {Helper} from './baseHelper';

并且无法解决错误消息 - SyntaxError: Unexpected token import

但如果我将import {Helper} from './baseHelper'替换为const ... = require('./baseHelper') - 它就可以了。

Jest设置为:

"jest": {
   "globals": {
     "ts-jest": {
       "tsConfigFile": "tsconfig.spec.json"
     },
     "__TRANSFORM_HTML__": true
   },
   "preset": "jest-preset-angular",
   "setupTestFrameworkScriptFile": "<rootDir>/jest/setupJest.ts",
   "transformIgnorePatterns": [
     "node_modules/(?!core-pr/src)"
   ],
   "testEnvironment": "jsdom",
   "transform": {
     "^.+\\.ts$": "<rootDir>/node_modules/ts-jest/preprocessor.js",
     ".*\\.svg$" : "<rootDir>/jest/transformers/svgTransformer.js"
   },
   "testRegex": "",
   "testMatch": ["<rootDir>/src/**/*.unit.ts"],
   "moduleFileExtensions": [
     "ts",
     "js"
   ]
}

是否有人就这种从外部依赖解决的相对导入问题提出建议?

1 个答案:

答案 0 :(得分:0)

经过调查,我发现配置文件中的transformIgnorePatterns不正确。要解决我应该改变这个

"transformIgnorePatterns": [
   "node_modules/(?!core-pr/src)"
],

"transformIgnorePatterns": [
   "node_modules/core-pr/node_modules/"
],