创建React应用程序需要一种依赖项:"babel-loader": "8.1.0"

19

项目依赖树可能存在问题。这很可能不是 Create React App 的错误,而是您需要在本地修复的问题。

Create React App 提供的 react-scripts 包需要一个依赖项:

"babel-loader": "8.1.0"

不要尝试手动安装它:您的包管理器会自动安装它。但是,在树上更高处检测到了不同版本的 babel-loader:

D:\Reactjs\node_modules\babel-loader(版本:8.0.6)

手动安装不兼容的版本已知会导致难以调试的问题。

如果您想忽略此检查,请将 SKIP_PREFLIGHT_CHECK=true 添加到项目中的 .env 文件中。这将永久禁用此消息,但您可能会遇到其他问题。

要解决依赖关系树问题,请按照以下精确顺序尝试以下步骤:

  1. 删除项目文件夹中的 package-lock.json(不是 package.json!)和/或 yarn.lock。
  2. 删除项目文件夹中的 node_modules。
  3. 从项目文件夹中的 package.json 中的依赖项和/或 devDependencies 中删除“babel-loader”。
  4. 运行 npm install 或 yarn,具体取决于您使用的包管理器。

在大多数情况下,这应该足以解决问题。如果这没有帮助,您可以尝试其他几件事情:

  1. 如果您使用npm,请安装yarn(http://yarnpkg.com/)并使用它重复执行上述步骤。这可能会有所帮助,因为npm在包hoisting方面存在已知问题,这些问题可能会在以后的版本中得到解决。

  2. 检查一下D:\Reactjs\node_modules\babel-loader是否在您的项目目录之外。例如,您可能意外地在主目录中安装了某些内容。

  3. 尝试在您的项目文件夹中运行npm ls babel-loader。这将告诉您除了预期的react-scripts之外,哪个其他包安装了babel-loader。

  4. 如果没有其他方法可以帮助您,则在您的项目中的.env文件中添加SKIP_PREFLIGHT_CHECK=true。这将永久禁用此先决条件检查,以防您仍要继续进行。


这个回答解决了你的问题吗?[NPM start返回错误,“项目依赖树可能存在问题”] (https://dev59.com/U1MI5IYBdhLWcg3wUZud) - Henke
14个回答

11
请先尝试故障排除指南。如果仍无法解决问题,请在根目录中创建一个.env文件,添加SKIP_PREFLIGHT_CHECK=true并使用npm start重新启动。如果这也没有帮助,请改用yarn。对于大多数人来说,删除node_modules文件夹并重新安装可以解决问题。

npm i yarn -g


6
你认为这是一个合理或逻辑的解决方案吗?错误提示表示它可能会引发其他错误。 - Emad Baqeri

8
你可能之前在你的用户文件夹中安装过一个项目。检查你的用户根目录中是否存在 node_modules 目录和 package-lock.json 文件。
你可以使用以下命令将其删除:
rm -rf ~/User/node_modules
rm -rf ~/User/package-lock.json

在这之后,删除你的项目中的node_modules目录和package-lock.json文件,然后再次运行npm install。这样就可以解决问题了。


5
我已经完成这些步骤,但错误仍然存在,有其他解决方案吗? - Emad Baqeri

7
只需在您的package.json文件中添加一个可选的依赖项:
"optionalDependencies": {
  "babel-loader": "8.1.0"
},

...然后再次运行npm iyarn


4

为了帮助其他人,我在此发表。

我已将一个repo克隆到我的系统中,并执行了npm install,但是当我尝试运行npm run start时却出现了上述错误。我在父文件夹中没有任何node_modules,我尝试删除我的node_modulespackage-lock.json,再次执行npm install,但它没有起作用。

我发现我有一个旧版本的包(quill-magic-url),需要babel-loader@^7.1.5。因此,当我执行npm install时,它安装了7.1.5。我升级了该包,BOOM就好了。

PS 我在VS Code中执行了“在所有文件中查找”搜索,以查找babel-loader的使用位置。那就是我发现这个过时版本的地方。


4
为避免添加SKIP_PREFLIGHT_CHECK标志,请将package.json中babel-loader的脱字符号删除以锁定版本。
"babel-loader": "^8.1.0"
to
"babel-loader": "8.1.0"

3
我通过将babel-loader添加到我的package.json文件的对等依赖项中来解决了这个问题。
"peerDependencies": {
  "babel-loader": "8.1.0"
}

这样我就不必跳过预检查(通过添加SKIP_PREFLIGHT_CHECK环境变量),也不必将babel-loader安装为明确的依赖项。

1
这个在我们的项目中工作得很好。谢谢Andris。 - iarobinson
在整整一天的依赖问题中,我终于找到了这个可行的解决方案。虽然我需要在我的项目文件夹和React子文件夹/项目中都包含peerDependencies和otherDependencies。 - JessycaFrederick

2
在我的情况下,这是在我将Storybook添加到我的React项目后发生的,然后React项目无法启动。 我在package.json中添加了一个依赖项:
"dependencies": {
  "babel-loader": "8.1.0"
}

然后再次运行 yarn install

React应用程序和Storybook都可以正常工作。


2

不确定这是否有助于任何人,但我遇到了这个确切的错误。 问题的原因是我在C驱动器的根目录下有一个node_modules文件夹。 它在c:\ node_modules中。 我的项目深埋在另一个目录中,仍然看到了c:\ node_modules文件夹,并在查找它。 所以我做了以下事情:

  1. 删除C盘根目录下的node_modules文件夹。
  2. 从我的项目中删除node_modules文件夹
  3. 从我的项目中删除package-lock.json文件
  4. 从终端重新运行npm install(确保您在您的配置文件夹中)。
  5. 从终端运行npm start

2

SKIP_PREFLIGHT_CHECK=true 可以正常工作!


4
这并没有解决问题,只是绕过了它。 - theKid

1
这个错误意味着您安装了一项与CRA列表冲突的依赖项。您只需按照他们提供的说明来删除它即可。
您还可以使用“npm ls dependency_name”命令查看所有已安装的版本。在您的情况下,它是“babel-loader”。
一旦您发现消息中指示的多个版本都已安装,只需卸载错误的版本即可: npm uninstall dependency_name。您可以在末尾添加“@version_number”以卸载需要卸载的特定版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接