意外的节点类型错误SequenceExpression with jest

时间:2017-05-12 14:50:44

标签: node.js reactjs jestjs babel

我正在为一段React代码添加快照测试,我在这个错误中招致: Unexpected node type: SequenceExpression (This is an error on an internal node. Probably an internal error. Location has been estimated.)

代码转换并且工作正常,而AST explorer并没有警告我任何事情。

在这个新测试之前,没有其他测试给我任何类似的错误,我们的代码库中有很多它们。

我尝试重新安装jest,重新安装babel-jest,删除并重新安装所有模块(使用yarn --pure-lock),将jestbabel-jest升级到最新版本(两者都 20.0.1 ),冲洗并重复。
没有任何效果。

仅当我尝试收集覆盖范围(使用--coverage)时才会出现这种情况,而它出现的最小代码段是:

import { tint } from 'polished'
import styled from 'styled-components'

export default styled.label`
  background: ${({ x, y }) => (x ? tint(0.3, y.a) : y.b)};
`

2 个答案:

答案 0 :(得分:3)

这是我发现的:

这是一个问题代码覆盖能够理解样式组件和抛光的问题。我上午在我的babelrc中使用babel-plugin-polished以及以下内容:

"plugins": [ "polished" ]

但是如果你在一个值上调用export,并且在对象或导出的对象中也不使用该值,它将会失败。

失败:

export const charcoalBlue = rgb(104, 131, 145);

不会失败:

export const charcoalBlue = rgb(104, 131, 145);
const colors = { charcoalBlue }

所以我的解决方案是忽略我的样式文件,或者只是确保我使用我创建的值而不仅仅是导出它们。

忽略样式文件的一种方法是将它放在package.json中:

"jest": {
  "collectCoverageFrom": [
    "src/**/*.{js,jsx}",
    "!**/*.styles.js",
  ]
}

并命名样式文件{ComponentName}.styles.js

希望这有帮助!

答案 1 :(得分:0)

我遇到了同样的问题!

我通过解决它来解决它:

import styled, {css} from 'styled-components';

styled.label`
  ${({x,y}) => x
    ? css`background: tint(0.3, y.a);`
    : css`background: ${y.b};`
  }
`;