jest + typescript + es6 modules (yet again, 2019) - SyntaxError: Unexpected token export
jest + typescript + es6 modules (yet again, 2019) - SyntaxError: Unexpected token export
我在尝试使用 jest、typescript 和 es6 模块时仍然遇到问题。我的测试是用 Typescript 编写的,我正在尝试从使用 es6 模块的 js 文件导入对象。为此,我已经关注 jest documentation 并在我的 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: Unexpected token export
D:\devel\tomtom_dag\dist\dag.js:72
}();export { e as Directions, t as Action, n as Dag };
有人可以说我做错了什么或指出具有类似配置的项目吗?是的,我已经在谷歌上搜索了几个小时,并尝试了 here, here and have tried with this 插件的解决方案 - 结果相同=(
更新:
我创建了一个项目来重现这个问题:
https://github.com/AntonPilyak/jest_typescript_es6
另外,我注意到我忘记提到我正在尝试使用 jest@23 版本,因为 ts-jest 不能与最新版本一起使用(发出警告 + 我得到一个空的测试套件)。也许,我的问题来自于那个事实。但是,我仍然无法进行正确的配置:如果我使用最新的笑话,我会收到警告 + 笑话说测试套件是空的并且测试通过了,但它不应该通过。
它适用于 ts-jest 24 + 它似乎是我 IDE 中的一个错误:https://youtrack.jetbrains.com/issue/IDEA-207553
我在尝试使用 jest、typescript 和 es6 模块时仍然遇到问题。我的测试是用 Typescript 编写的,我正在尝试从使用 es6 模块的 js 文件导入对象。为此,我已经关注 jest documentation 并在我的 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: Unexpected token export
D:\devel\tomtom_dag\dist\dag.js:72
}();export { e as Directions, t as Action, n as Dag };
有人可以说我做错了什么或指出具有类似配置的项目吗?是的,我已经在谷歌上搜索了几个小时,并尝试了 here, here and have tried with this 插件的解决方案 - 结果相同=(
更新: 我创建了一个项目来重现这个问题: https://github.com/AntonPilyak/jest_typescript_es6 另外,我注意到我忘记提到我正在尝试使用 jest@23 版本,因为 ts-jest 不能与最新版本一起使用(发出警告 + 我得到一个空的测试套件)。也许,我的问题来自于那个事实。但是,我仍然无法进行正确的配置:如果我使用最新的笑话,我会收到警告 + 笑话说测试套件是空的并且测试通过了,但它不应该通过。
它适用于 ts-jest 24 + 它似乎是我 IDE 中的一个错误:https://youtrack.jetbrains.com/issue/IDEA-207553