【发布时间】:2017-07-04 18:05:20
【问题描述】:
我正在对当前没有测试的现有项目实施测试。我的测试无法编译 node_modules/ 导入。
/Users/me/myproject/node_modules/lodash-es/lodash.js:10
export { default as add } from './add.js';
^^^^^^
SyntaxError: Unexpected token export
at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:320:12)
at Object.<anonymous> (app/reducers/kind_reducer.js:2:43)
at Object.<anonymous> (app/reducers/index.js:12:47)
我发现的解决方法是在 package.json jest 配置中将node_modules 列入“白名单”,如下所示:
"jest": {
"transformIgnorePatterns": [
"!node_modules/"
]
}
这似乎是个 hack,因为运行一个导入 node_modules/lodash-es/lodash.js 的简单测试需要 1 分钟多的时间。
【问题讨论】:
-
很多节点模块都导出 ES5,这样 jest 可以直接运行它而无需转换。这就是为什么默认情况下 jest 不会转换 node_modules。在这种情况下,lodash-es 专门导出 es 模块,因此您必须让 jest 转换该代码。如果您在
transformIgnorePatterns中使用"!node_modules/lodash-es"来代替 jest 仅在 lodash-es 上运行 babel,您可能是安全的。