Jest 无法转译 node_modules。

3

当我运行Jest时,出现了以下错误:

SyntaxError: node_modules/my_styleguide/src/components/blocks/SegmentSetting.jsx: Unexpected token (46:10)
  44 |         ) {
  45 |         return (
> 46 |           <p className="SettingDescr">{self.props.description}</p>
     |           ^
  47 |         )
  48 |       }
  49 |     }

node_modules的依赖仍处于es6格式。Jest似乎没有提供将node_modules转换的选项,就像它对实际应用程序所做的那样。相反,jest忽略了node_modules文件夹。

.bashrc文件看起来没问题:

{
  "presets": ["es2015", "react", "stage-0"]
}

如何让Jest也对node_modules进行转译?这相当于在mocha中使用"--ignore false"标志。


你安装了 babel-jest 吗? - Andreas Köberle
@AndreasKöberle 是的。它可以很好地转译应用程序。只有 node_modules 依赖似乎被忽略了。 - Alberto Centelles
1
你尝试过在Jest设置中重置transformIgnorePatterns吗?默认情况下,node_modules会被忽略。因此,将其设置为transformIgnorePatterns: []可能会有所帮助。 - Andreas Köberle
1
这是有道理的@AndreasKöberle。我遇到了这个错误... 错误:未知的配置选项“transformIgnorePatterns”,其值为“”。这可能是一个打字错误或用户的错误,修复它将删除此消息。 我正在使用双引号和一个空数组[]作为值。我还尝试过在空数组中使用双引号[""]。 - Alberto Centelles
似乎在v17中是新的 npm install jest@17.0.0 --save-dev - Andreas Köberle
顺便说一句,最好的方法是只是模拟这些依赖项。 - Andreas Köberle
1个回答

2
我会标记这个答案,而不是那个答案。
我遇到了一个类似的问题,在 ES2015 中有多个组件需要转换。
我更新了 transformIgnorePatterns:
["/node_modules/(?!(our-react-components-.*?\\.js$))"]
对于以 our-react-components-* 文件夹结尾的模块的负向先行断言意味着 Jest (因此也是 Babel)将找到并转换我们共享的组件。
这是在一个弹出的 Create React App 项目中使用 Jest 20.0.4。

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