首页 文章

用create-react-app开玩笑 - 意外的令牌错误

提问于
浏览
7

我正在处理最近从旧的Webpack构建转换为使用 create-react-app 的应用程序 . 大多数过渡进展顺利,但我遇到了以前单元测试的一些主要问题 . 当我运行 npm test ,它具有 "test": "react-scripts test --env=jsdom" 的标准package.json测试脚本时,它表示我的所有快照测试都失败了 . 这是很好的和预期的,因为已经有很多变化,测试需要更新 .

但是,当我刚运行 jestjest --updateSnapshot 时,我的所有测试都会立即失败并出现 SyntaxError: Unexpected token 错误,其中大多数错误与 import 有关 . 这让我相信Jest没有使用Babel来正确转换ES6语法 .

以前,我们使用带有以下设置的.babelrc文件:

{
"presets": ["env", "react", "stage-0", "flow"],
"plugins": ["transform-runtime", "add-module-exports", "transform-decorators-legacy"]
}

但由于Babel已包含在 create-react-app 中,我删除了此文件以及对Babel的任何引用 . 我的package.json也没有为Jest本身设置任何特殊脚本 .

我已经尝试过添加一些以前使用过的Babel软件包了,但是在进一步阅读之后看起来似乎无论如何这些都不会起作用,除非我从 create-react-app 弹出并且这不是一个选项 .

什么会导致 npm test 正确运行但 jest 失败?

1 回答

  • 4

    事实证明这是一个巴别塔问题 . 即使 create-react-app 已预配置,我们仍然需要添加自定义配置,因为我们的应用程序最初并非使用 cra 构建 . 我安装了一些新的dev依赖项:

    "babel-cli": "^6.26.0",
    "babel-jest": "^22.4.1",
    "babel-preset-react-app": "^3.1.1",
    

    并且还更新了 .babelrc

    {
      "presets": ["babel-preset-react-app"]
    }
    

    现在, jest 和_1346351都可以正常工作 .

相关问题