'React' 指的是一个 UMD 全局,但当前文件是一个module

IT技术 javascript reactjs typescript create-react-app
2021-04-29 20:09:13

我更新了我的项目以创建 react app 4.0,并且我正在放缓将我的文件移动到 TypeScript。我知道使用这个新版本,您不必重复从“react”导入 React。但是,在我未导入 React 的所有 TS 文件中,我收到此错误'React' refers to a UMD global, but the current file is a module. Consider adding an import instead.ts(2686)我知道我可以通过导入 React 来修复它,但我认为这不再需要了。另外,有人可以解释这个错误的含义吗?

我的基本 TSX 文件

const Users = () => {
    return <>Teachers aka Users</>;
};

export default Users;
3个回答

Create React App 在版本 4 中支持开箱即用的新 JSX 转换,但如果您使用自定义设置,则需要以下内容来消除在jsx不使用 的情况下编写时的 TypeScript 错误import React from 'react'

  • typescript 版本至少为 4.1 版
  • reactreact-dom至少版本 17
  • tsconfig.json必须有一个jsxcompilerOptionreact-jsxreact-jsxdev

例子:

// tsconfig.json
{
  "compilerOptions": {
    ...
    "jsx": "react-jsx"
    ...
  },
}

可以在此处找到支持 React 17 JSX 工厂的 TypeScript 文档

此错误消息来自 TypeScript 编译器。Typescript 4.0 目前不支持 React 17 新的 jsx 转换,4.1 将支持。

TypeScript v4.1 Beta - React 17 JSX 工厂

添加

import React from 'react'

修复了这个问题