SyntaxError: Unexpected identifier when running jest in TypeScript CRA project

SyntaxError: Unexpected identifier when running jest in TypeScript CRA project

我有一个使用 TypeScript 的 create-react-app 项目。我最近在我的项目中添加了几个包(特别是 material-ui-dropzone@azure/storage-blob),突然我所有的测试都失败了,因为我还没有真正接触过的文件中的 SyntaxError。我看到其他人在 es6 导入和 babel 转换方面遇到问题,但这个错误似乎有点不同。 yarn startyarn build 工作没有任何问题。这是 yarn test:

的输出
/<projectPath>/src/Shared/utils/authorizer.ts:27
    private constructor() {
            ^^^^^^^^^^^
SyntaxError: Unexpected identifier
     9 | import Log from 'Core/debugLog/Log';
    10 | import { Guid } from 'guid-typescript';
  > 11 | import { Authorizer } from 'Shared/utils/authorizer';
       | ^
    12 | import { AppInsights } from 'Shared/utils/appInsights';
    13 | import { OperationDefinitionNode } from 'graphql';
    14 |
    at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
    at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
    at Object.<anonymous> (src/Core/graphql/graphQlConfig.ts:11:1)

在我开玩笑的配置中 package.json 我只有几个与覆盖率相关的配置。

我尝试了运行yarn upgrade,发现很多babel依赖项从7.5.5升级到7.7.2,但同样的问题仍然存在。

请询问我是否可以提供任何其他信息来帮助诊断问题。

我终于通过添加 ts-jest:

解决了这个问题
yarn add -D ts-jest

并在 package.json 中的 "jest" 下添加:

"transform": {
  "^.+\.tsx?$": "ts-jest"
},