所以看起来可能发生的事情是在您使用create-react-app 创建了一个新应用程序之后。然后,您手动添加了带有yarn add babel-jest 的babel-jest 包。至少,这就是我能够在我的机器上复制您引用的错误的方式。
您确实不需要手动添加babel-jest 包,因为它已经捆绑到create-react-app 中。因此,您需要按照与上述错误一起提供的说明来删除软件包:
首先,打开package.json 并删除包含babel-jest 的依赖行。它可能看起来像这样:
// package.json
{
"name": "babel",
"version": "0.1.0",
"private": true,
"dependencies": {
"babel-jest": "23.6.0", <----------- REMOVE THIS LINE
"react": "^16.8.4",
"react-dom": "^16.8.4",
"react-scripts": "2.1.8"
},
然后,由于您使用的是yarn,请在项目根文件夹中执行以下操作:
rm -rf node_modules
rm yarn.lock
yarn install
这会删除手动添加的babel-jest 包,然后重新安装最初随create-react-app 提供的所有包(其中包括已经捆绑的babel-jest 包)。
更新
根据您的评论,我认为发生的事情是这样的:
你使用了npm init,它初始化了一个新的nodejs项目,有自己的package.json文件。
-
然后在那个文件夹中,您使用create-react-app 创建了一个test 子文件夹 - 这个初始化另一个 项目有它自己的package.json 文件。
由于某种原因,父文件夹中的项目(您使用 npm init 初始化)引用了 babel-jest - 这与您使用 @987654341 创建的子文件夹中的应用程序相冲突@。
请记住,npm 和 yarn 都是 nodejs 项目的包管理器。他们每个人都有一个init 命令,可用于初始化一个新项目,设置一个package.json 文件。在大多数情况下,您永远不需要在单个项目中同时使用npm 和yarn。只需选择您要使用的那个并坚持使用那个。
create-react-app 是另一个命令,可用于初始化一个新的 ReactJS 项目,其中内置了很多初始设置。它内置了 babel-jest,这可能会导致与父文件夹的某些冲突package.json 文件或可能全局安装的 babel-jest 包。
作为一般规则,您应该只使用以下 1 项:
* npm init 在当前文件夹初始化一个项目。
* yarn init 在当前文件夹初始化一个项目。
* create-react-app . 在当前文件夹初始化一个项目。
对于您目前的情况,由于您正在处理一个新项目,我建议您尝试重新开始初始化一个新的create-react-app 项目。转到父文件夹,在您使用 npm init 命令的文件夹之外。创建一个项目文件夹,然后在该文件夹中运行create-react-app .