在“ if (error?.stack) ”中为快照设置 Jest 时出错

ill*_*321 14 javascript testing snapshot reactjs jestjs

我打算创建快照测试,但一开始就遇到了问题。

我在运行测试时遇到这样的错误:

    /Users/illia/WebstormProjects/TESTS/node_modules/jest/node_modules/jest-cli/build/cli/index.js:161
    if (error?.stack) {
              ^
SyntaxError: Unexpected token '.'
Run Code Online (Sandbox Code Playgroud)

在测试文件中我没有错误

import renderer from 'react-test-renderer';

import PaymentDisclaimer from './PaymentDisclaimer';

    it('renders correctly when all default props', () => {
        const tree = renderer.create(<PaymentDisclaimer fullPrice={9} />).toJSON();
        expect(tree).toMatchSnapshot();
    });
Run Code Online (Sandbox Code Playgroud)

套餐:

"react-test-renderer": "^18.2.0",
"jest": "^29.0.3",
"ts-jest": "^29.0.1", (was installed as possible solution)
Run Code Online (Sandbox Code Playgroud)

小智 19

当 jest 在不从 JS 读取新更新的节点版本下运行时,会发生这种情况。您需要在节点 14 或更高版本中运行它。

具体来说,?.inif (error?.stack)是一个可选的链接运算符,仅在版本 14 或更高版本中受支持。

您可以使用以下命令切换节点版本nvm

$ nvm use 14 
Now using node v14.18.0 (npm v6.14.15)
Run Code Online (Sandbox Code Playgroud)

检查节点版本管理器 (nvm)