【问题标题】:'React' must be in scope when using JSX but I do not use ESLint使用 JSX 时,'React' 必须在范围内,但我不使用 ESLint
【发布时间】:2022-01-09 00:50:54
【问题描述】:

我已经在react docs 和stackoverflow 上读到,对于我现有的错误:'React' must be in scope when using JSX 我应该禁用一些 ESLint 的东西,但我已经从 VSCode 中完全取消了 ESLint,但我仍然收到错误。

我使用create react app 与typescript 和react-router-dom 创建了一个简单的反应应用程序。 React 是 v.17+

这是我的代码:

src/index.tsx

import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import { BrowserRouter } from "react-router-dom";

ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </React.StrictMode>,
  document.getElementById("root")
);

src/App.tsx

import "./App.css";
import { Route, Routes } from "react-router-dom";
import Home from "views/Home";

function App() {
  return (
    <Routes>
      <Route path="/" element={Home} />
    </Routes>
  );
}

export default App;

src/views/Home.tsx

const Home = () => {
  return <div>Home</div>;
};

export default Home;

如果我在App.tsx 和Home.tsx 之上导入import React from "react";,那么它可以毫无问题地编译。但是我对这个解决方案并不满意,因为我使用的是 React v.17+

【问题讨论】:

  • 你用过npx create react app吗?
  • @shubhamjha 是的,就像他们的文档中解释的那样npx create-react-app my-app --template typescript

标签: reactjs eslint


【解决方案1】:

Eslint 被绑定到 create react 应用中,如果你想让它消失,你需要手动弹出和禁用规则。

【讨论】:

  • 谢谢!你的回答给了我正确的指导。我对 CRA 进行了一些研究,还发现了这个关于禁用任何东西的有用答案:stackoverflow.com/a/66719992/7335848。不知何故,在package.json 我的react-scripts 版本更改为^3.0.1。我创建了一个新的 CRA 应用程序,现在它是 v5.0.0,所以问题似乎消失了。
【解决方案2】:

这是 Creact React App 的依赖项。如果您弹出您的 CRA 应用程序,您可以在 Package.json 中看到此列表。正如您在下面看到的,Eslint 就在其中!所以即使你从插件中卸载了 eslint,它仍然在 CRA 应用程序后面工作。如果你想关闭 eslint,你应该弹出你的 CRA 应用程序并卸载它,但你应该知道你不能再次包装弹出的 CRA 应用程序,维护弹出的 CRA 文件太难了。所以,我的回答是你应该将 import React from 'react' 放到所有文件中,或者你应该使用 Webpack、babel 等构建你自己的 React 项目,但你知道这需要学习时间。

{
  "dependencies": {
    "@babel/core": "^7.16.0",
    "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
    "@svgr/webpack": "^5.5.0",
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^12.0.0",
    "@testing-library/user-event": "^13.2.1",
    "babel-jest": "^27.4.2",
    "babel-loader": "^8.2.3",
    "babel-plugin-named-asset-import": "^0.3.8",
    "babel-preset-react-app": "^10.0.1",
    "bfj": "^7.0.2",
    "browserslist": "^4.18.1",
    "camelcase": "^6.2.1",
    "case-sensitive-paths-webpack-plugin": "^2.4.0",
    "css-loader": "^6.5.1",
    "css-minimizer-webpack-plugin": "^3.2.0",
    "dotenv": "^10.0.0",
    "dotenv-expand": "^5.1.0",
    "eslint": "^8.3.0",
    "eslint-config-react-app": "^7.0.0",
    "eslint-webpack-plugin": "^3.1.1",
    "file-loader": "^6.2.0",
    "fs-extra": "^10.0.0",
    "html-webpack-plugin": "^5.5.0",
    "identity-obj-proxy": "^3.0.0",
    "jest": "^27.4.3",
    "jest-resolve": "^27.4.2",
    "jest-watch-typeahead": "^1.0.0",
    "mini-css-extract-plugin": "^2.4.5",
    "postcss": "^8.4.4",
    "postcss-flexbugs-fixes": "^5.0.2",
    "postcss-loader": "^6.2.1",
    "postcss-normalize": "^10.0.1",
    "postcss-preset-env": "^7.0.1",
    "prompts": "^2.4.2",
    "react": "^17.0.2",
    "react-app-polyfill": "^3.0.0",
    "react-dev-utils": "^12.0.0",
    "react-dom": "^17.0.2",
    "react-refresh": "^0.11.0",
    "resolve": "^1.20.0",
    "resolve-url-loader": "^4.0.0",
    "sass-loader": "^12.3.0",
    "semver": "^7.3.5",
    "source-map-loader": "^3.0.0",
    "style-loader": "^3.3.1",
    "tailwindcss": "^3.0.2",
    "terser-webpack-plugin": "^5.2.5",
    "web-vitals": "^2.1.0",
    "webpack": "^5.64.4",
    "webpack-dev-server": "^4.6.0",
    "webpack-manifest-plugin": "^4.0.2",
    "workbox-webpack-plugin": "^6.4.1"
  },  
}

【讨论】:

猜你喜欢
  • 2017-07-27
  • 2020-09-11
  • 2023-01-21
  • 2018-08-22
  • 2018-08-26
  • 2022-11-17
  • 2020-01-11
  • 2019-10-26
  • 1970-01-01
相关资源
最近更新 更多