使用 jest 运行测试时的可选链接问题

问题描述

我正在尝试用 Jest 运行一个测试,我目前在我的 React 应用程序中使用 jsx 和 tsx(从 js 更改为 ts)但是当我运行我的测试时,所有 jsx 测试都成功了,除了 tsx 中的那些带有可选阻塞。我的输入总是出现错误 Unexpected token,看起来像

...
<Input 
    value={parent?.child}
...

这是我的笑话配置

{
    "verbose": true,"roots": [
      "<rootDir>/app"
    ],"setupFiles": [
      "./config/webpack/jest/config.js"
    ],"moduleNameMapper": {
      "^components(.*)": "<rootDir>/app/javascript/components$1","^utils(.*)": "<rootDir>/app/javascript/utils$1","^types(.*)": "<rootDir>/app/javascript/types$1","\\.(css|pcss|scss)$": "<rootDir>/spec/__mocks__/styleMock.js","\\.(gif|ttf|eot|svg|png)$": "<rootDir>/spec/__mocks__/fileMock.js"
    },"snapshotSerializers": [
      "<rootDir>/node_modules/enzyme-to-json/serializer"
    ],"testRegex": "(/__tests__/.*|\\.(test))\\.(ts|tsx|js|jsx)$","moduleFileExtensions": [
      "ts","tsx","js","jsx"
    ],"transform": {
      "\\.[jt]sx?$": "babel-jest"
    }
}

我如何使用可选链和玩笑来工作,这可能是什么问题?

解决方法

对我来说,问题是在我的 tsconfig.json 中,我使用了 "lib": ["ES2020"],这与我的节点版本冲突。将节点版本更改为 v14 解决了该问题。
在这里,您将找到带有节点版本的 lib 目标的链接:

https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...