jest + typescript + es6模块(再次提及,2019年)- 语法错误:意外的令牌“export”

12

我仍然在使用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
@AndyJ,我认为这是过时的信息,export {something as somethingElse} 是有效的es2016代码,在这里可以查看:https://github.com/tc39/proposal-export-ns-from. 这是一个提案,但它已被列入当前ECMAScript 2015模块部分。另外,我尝试使用调试版本(未经压缩),在导出中没有'as',但结果是相同的。 - Anton Pilyak
1
@AndyJ,谢谢你的帮助=) - Anton Pilyak
1
就我个人而言,我在重新创建这个问题上遇到了一些困难。你能否分享一个完整的最小代码库,其中包含出现错误的部分? - Brian Adams
1
你有 jest v^23.6.0 和 babel-jest v^24.1.0,也许可以使用 23.x 版本的指南来配置 jest? - barbsan
显示剩余7条评论
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接