用 create-react-app 开玩笑 - 意外的令牌错误
Jest with create-react-app - unexpected token errors
我正在开发一个最近从旧 Webpack 构建转换为使用 create-react-app
的应用程序。大部分过渡都进行得很顺利,但我 运行 正在解决之前单元测试的一些主要问题。当我 运行 npm test
具有 "test": "react-scripts test --env=jsdom"
的标准 package.json 测试脚本时,它说我所有的快照测试都失败了。这很好并且在意料之中,因为有很多更改,并且需要更新测试。
然而,当我只是 运行 jest
或 jest --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
惨败?
原来是Babel的问题。即使 create-react-app
出现 pre-configured,我们仍然必须添加自定义配置,因为我们的应用最初不是使用 cra
构建的。我安装了一些新的开发依赖项:
"babel-cli": "^6.26.0",
"babel-jest": "^22.4.1",
"babel-preset-react-app": "^3.1.1",
并且还更新了 .babelrc
:
{
"presets": ["babel-preset-react-app"]
}
现在 jest
和 npm test
都能正常工作。
我正在开发一个最近从旧 Webpack 构建转换为使用 create-react-app
的应用程序。大部分过渡都进行得很顺利,但我 运行 正在解决之前单元测试的一些主要问题。当我 运行 npm test
具有 "test": "react-scripts test --env=jsdom"
的标准 package.json 测试脚本时,它说我所有的快照测试都失败了。这很好并且在意料之中,因为有很多更改,并且需要更新测试。
然而,当我只是 运行 jest
或 jest --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
惨败?
原来是Babel的问题。即使 create-react-app
出现 pre-configured,我们仍然必须添加自定义配置,因为我们的应用最初不是使用 cra
构建的。我安装了一些新的开发依赖项:
"babel-cli": "^6.26.0",
"babel-jest": "^22.4.1",
"babel-preset-react-app": "^3.1.1",
并且还更新了 .babelrc
:
{
"presets": ["babel-preset-react-app"]
}
现在 jest
和 npm test
都能正常工作。