create-react-app和TypeScript错误:使用JSX时,“ React”必须在范围内

时间:2020-09-24 07:48:27

标签: javascript reactjs typescript

我使用CLI命令create-react-app client --typescript用TypeScript初始化了一个React项目。然后,我运行了npm start,但是收到了以下编译错误:

./src/App.js
  Line 26:13:  'React' must be in scope when using JSX  react/react-in-jsx-scope

除了删除不必要的徽标文件外,我什至没有修改create-react-app提供的样板项目,而我以前使用TypeScript完成的React应用程序也可以编译。以下是我的App.tsxindex.tsx文件:(请注意,App.tsx中的徽标已删除,但我没有触摸index.tsx

index.tsx:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

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

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: 
serviceWorker.unregister();

App.tsx:

import React from 'react';
import './App.css';

function App() {
  return (
    <div className="App">
        Lorem
    </div>
  );
}

export default App;

ReactReactDOM是导入的,那么导致此错误的原因是什么?

编辑:

我发现运行npm start的{​​{1}}正在将我的react-scripts start文件编译成.tsx文件,这可能导致了此问题。是什么原因导致了上述行为?

1 个答案:

答案 0 :(得分:0)

尝试


const RootApp:React.FC = () => {
  return (
     <React.StrictMode>
    <App />
  </React.StrictMode>
  );
}

render(<RootApp />, document.getElementById("root"));