我仍然在使用jest,typescript和es6模块时遇到问题。我的测试用例是用typescript编写的,我试图从使用es6模块的js文件中导入对象。为了做到这一点,我遵循了jest文档并在位于项目根目录中的babel.config.js中添加了以下内容:
module.exports = {
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current'
}
}
]
]
};
我已经安装了以下依赖:
"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/preset-env": "^7.3.1",
"@types/jest": "^23.3.13",
"@types/node": "^10.12.18",
"babel-jest": "^24.1.0",
"jest": "^23.6.0",
"rollup": "^1.1.2",
"rollup-plugin-terser": "^4.0.4",
"rollup-plugin-typescript2": "^0.19.2",
"ts-jest": "^23.10.5",
"ts-node": "^8.0.1",
"typescript": "^3.2.4"
}
在 jest.config.js 文件中,我有以下内容:
module.exports = {
verbose: true,
transform: {
"^.+\\.jsx?$": "babel-jest",
'^.+\\.ts?$': 'ts-jest'
},
testEnvironment: 'node',
testRegex: '/test/.*\\.(test|spec)?\\.(ts|tsx)$',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node']
};
最后,我试图在我的测试中这样导入:
import {Dag, Directions} from "../dist/dag";
这里显示:SyntaxError:意外的token export
D:\devel\tomtom_dag\dist\dag.js:72
}();export { e as Directions, t as Action, n as Dag };
有人能说出我做错了什么或者指向一个相似配置的项目吗?是的,我已经谷歌了几个小时并尝试了这里,这里的解决方案以及使用这个插件 - 但结果相同 =(
更新: 我创建了一个项目来复现这个问题:https://github.com/AntonPilyak/jest_typescript_es6 另外,我注意到我忘记提到我正在尝试使用jest@23版本,因为ts-jest无法与最新版本一起使用(会发出警告+我得到一个空测试套件)。也许,我的问题正是由于这个事实造成的。但是,我仍然无法进行正确的配置:如果我使用最新的jest,我会收到一个警告+jest说测试套件为空,并且测试通过,即使它不应该。
SyntaxError: Unexpected token export
是有道理的,因为它在一个 JS 文件中发现了 TS:D:\devel\tomtom_dag\dist\dag.js:72
}();export { *e as Directions, t as Action, n as Dag* };
。从你提供的信息中,我看不出原因,但这是你可以跟进的线索。 - user310988