首页 > 解决方案 > create-react-app eslint 问题,因为更高级别的文件夹包含另一个应用程序,其中包含 node_modules

问题描述

我有一个 git 存储库,其中有 2 个项目,一个环回应用程序(命名应用程序)和一个使用 create-react-app 创建的反应应用程序(命名客户端)。目录结构如下;

├─┬app
│ ├──node_modules
│ ├─┬client
    ├─node_modules

环回项目(应用程序)使用 eslint,在 devDependencies 中有 eslint,客户端在 package.json 中没有 eslint。

客户端应用程序是使用 create-react-app 创建的,因此当我运行 react-scripts 时,它会在上层目录中找到 eslint,并抱怨它的版本,如果我删除 app\node_modules 一切正常。

那么 react-scripts 如何在上层目录中找到 eslint,有没有办法告诉它不要检查任何其他 node_modules 文件夹,它应该只检查当前文件夹。

react-scripts 告诉我,我可以将 SKIP_PREFLIGHT_CHECK=true 放在我的 .env 文件中,这样做是否安全,它是在上层文件夹中运行 eslint 3.x,还是运行安装所需的 5.6.0 版本在 client\node_modules 文件夹中?

我将为这个项目设置一个部署工具链,所以我需要确保它一直都能正常工作。 编辑: 我的 client\package.json 中的配置条目

"eslintConfig": {
    "extends": "react-app",
    "root": true
  },

EDIT2: 重现问题的步骤:我的节点版本是:8.11.3

npx loopback-cli app (accept default options when prompted)
cd app
npm i
npx create-react-app client
cd client
npm i
npm run start (you should see the errors after this)

EDIT3: 我最终弹出了反应脚本。

标签: node.jsreactjsnpm

解决方案


.eslintrc尝试在您的文件夹中创建一个文件client,包括以下内容:

.eslintrc

{
  "extends": "react-app"
}

或者,这应该根据文档工作:

{
    "root": true
}

默认情况下,ESLint 会在所有父文件夹中查找配置文件,直到根目录。如果您希望所有项目都遵循某种约定,这可能很有用,但有时会导致意想不到的结果。要将 ESLint 限制为特定项目,请将 "root": true 放在 package.json 文件的 eslintConfig 字段或项目根级别的 .eslintrc.* 文件中。ESLint 一旦找到带有“root”的配置,就会停止在父文件夹中查找:true。


推荐阅读