react-create-app 中 babel loader 的问题

IT技术 reactjs webpack babeljs create-react-app babel-loader
2021-04-27 02:22:47

问题

create-react-app 初始化一个存储库,其中 babel-loader 安装为比需要的旧版本。

日志:

There might be a problem with the project dependency tree.
It is likely not a bug in Create React App,
but something you need to fix locally.

The react-scripts package provided by Create React App requires a dependency:

  "babel-loader": "8.0.4"

Don't try to install it manually: your package manager does it automatically.
However, a different version of babel-loader was detected higher up in the tree:

  C:\Users\user\node_modules\babel-loader (version: 8.0.2)

Manually installing incompatible versions is known to cause hard-to-debug issues.

If prefer to ignore this check, add SKIP_PREFLIGHT_CHECK=true to an .env file in your project.
That will permanently disable this message but you might encounter other issues.
    To fix the dependency tree, try following the steps below in the exact order:

      1. Delete package-lock.json (not package.json!) and/or yarn.lock in your project folder.
      2. Delete node_modules in your project folder.
      3. Remove "babel-loader" from dependencies and/or devDependencies in the package.json
    file in your project folder.
      4. Run npm install or yarn, depending on the package manager you use.

    In most cases, this should be enough to fix
    the problem.
    If this has not helped, there are a few other things you can try:

      5. If you used npm, install yarn (http://yarnpkg.com/) and repeat the above steps with it instead.
         This may help because npm has known issues with package hoisting which may get resolved in future versions.

      6. Check if C:\Users\User\node_modules\babel-loader is outside your project directory.
         For example, you might have accidentally installed something in your home folder.

      7. Try running npm ls babel-loader in your project folder.
         This will tell you which other package
    (apart from the expected react-scripts) installed babel-loader.

    If nothing else helps, add SKIP_PREFLIGHT_CHECK=true to an .env file in your project.
    That would permanently disable this preflight check in case you want to proceed anyway.

    P.S. We know this message is long but please read the steps above :-) We hope you find them helpful!

    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! reg@0.1.0 start: `react-scripts start`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the reg@0.1.0 start script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\User\AppData\Roaming\npm-cache\_logs\2018-12-13T18_22_47_802Z-debug.log

事情发生后

$ npx create-react-app reg && cd reg && npm start

我试过的

我尝试删除node_modules文件夹 和package-lock.json,然后运行npm install.

还安装了 yarn 并运行了yarn && yarn start

我已经重新创建了该应用程序 3 次并得到了相同的结果。

可能有帮助的信息

节点版本:10.8.0
NPM 版本:6.5.0
create-react-app / react-scripts:2.1.1
babel-loader:8.0.4
全局包列表(npm ls --depth=0 -g):

+-- create-react-app@2.1.1
+-- node-gyp@3.6.2
+-- npm@6.5.0
+-- yarn@1.12.3

package.json 文件:

{
  "name": "reg",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.6.3",
    "react-dom": "^16.6.3",
    "react-scripts": "2.1.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}
4个回答

遇到同样的问题,但给了一个小时的时间得到解决方案当我们运行时,npm start您会遇到这种错误,即此问题的版本相关问题。转到 node_modules 文件夹:

Project->node_modules->react-scripts->package.json

检查 package.json 文件

你得到了:"babel-loader": "8.0.4" 首先删除 : babel-loader 文件夹Project->node_modules->babel-loader ,然后运行npm i babel-loader@8.0.4(这取决于你的版本,你可以改变它,比如:npm i babel-loader@8.0.5)之后可能是你遇到了 webpack 问题然后遵循同样的事情从“ Project->node_modules->webpack”中删除 webpack并重新安装npm i webpack@4.19.1

4.19.1* webpack 的版本可能会改变..

.env在您的项目目录中创建一个文件并包含SKIP_PREFLIGHT_CHECK=true在该文件中。

在 Mac 上:

删除冲突的包 /Users/<yourusername>/node_modules

但是,在树的更高位置检测到了不同版本的 babel-loader:

您应该删除在树更高处检测到的 babel-loader 包。输出说有一个带有 babel-loader 的 node_modules 文件夹在..

C:\Users\user\node_modules\babel-loader(版本:8.0.2)

您也可以完全删除 C:\Users\user\node_modules 目录,除非出于某种原因您在 /Users/{user} 中有一个根植于那里的项目