我正在为一段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
),将jest
和babel-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)};
`
答案 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};`
}
`;