React + antd TS2694:命名空间'React'没有导出成员

Posted

技术标签:

【中文标题】React + antd TS2694:命名空间\'React\'没有导出成员【英文标题】:React + antd TS2694: Namespace 'React' has no exported memberReact + antd TS2694:命名空间'React'没有导出成员 【发布时间】:2018-06-16 01:35:29 【问题描述】:

我正在尝试将 antd 库添加到从 Visual Studio 2017 (15.2.2) 生成的 React 项目中。

我从项目模板“ASP.NET Core Web Application”开始,然后在下面的窗口中选择“React.js”。

此时一切正常。

如果我在package.json ("antd": "3.1.0") 中添加antd 并在一些tsx 文件中添加一个导入,例如home.tsx,如下所示:

import  Row  from 'antd';

我得到 3 个错误:

[at-loader] 中的错误 ./node_modules/antd/lib/badge/ScrollNumber.d.ts:28:56 TS2694:命名空间“React”没有导出的成员“DetailedReacthtmlElement”。

[at-loader] 中的错误 ./node_modules/antd/lib/badge/ScrollNumber.d.ts:38:52 TS2694:命名空间“React”没有导出的成员“DetailedReactHTMLElement”。

[at-loader] 中的错误 ./node_modules/antd/lib/input/TextArea.d.ts:15:47 TS2694:命名空间“React”没有导出的成员“TextareaHTMLAttributes”。

如何解决这些错误?

我已尝试更新所有软件包,但仍然遇到相同的错误... 我有一些其他项目同时使用 React 和 antd,它们不是基于 Visual Studio 2017 提供的 React.js 模板,我没有任何错误。

感谢您的帮助!

【问题讨论】:

我遇到了同样的问题,但使用的是 React Redux 模板。我编辑了你的问题并添加了一个赏金来尝试获得一些帮助。 【参考方案1】:

看起来antd 库有一个peer dependency of react >= 16,但是,就像你说的,Visual Studio 2017 会生成一个带有反应版本 15.2.2 的存储库。

一种解决方案是将您的react(实际上是您的@types/react,但您应该同时更改)依赖项更改为最新版本,目前为16.3.2。这就是@Zack 的建议,可能是更好的解决方案。请记住,如果您要升级react 版本号,您可能还应该升级react-dom 版本和@types/react-dom 版本。

或者,如果您想保持 Visual Studio 的输出不变,您可以使用支持 react v15 的 antd 的最新版本,即 antd 版本 2.13.11。要安装它,请运行npm install antd@2.13.11。这样做的缺点是您将无法使用任何其他依赖于react v16 的软件包。

【讨论】:

【参考方案2】:

解决这个问题的最简单方法是升级你的“typescript”包和你所有的 React 相关包(包括@types/react-*),除了“react-hot-loader”(只升级到最新的 ^3)到他们最新的主要版本。

如果仍然有问题,请删除 node_modules、yarn.lock、npm-shrinkwrap.json 和 wwwroot/dist 然后重试。

【讨论】:

以上是关于React + antd TS2694:命名空间'React'没有导出成员的主要内容,如果未能解决你的问题,请参考以下文章

命名空间“Electron.CrossProcessExports”没有导出成员“远程”

react+ts 项目:引入antd select组件联动 ,ts7053ts2741报错解决

react+ts仿antd icon库

react+ts 造轮子仿antd Menu组件(初级版)

react+ts 造轮子仿antd Menu组件(升级版)

React+Ts+Antd实现Modal弹框中控制多个Tab页的多个Form表单