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

时间:2018-01-06 12:03:21

标签: reactjs typescript asp.net-core visual-studio-2017 antd

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

我从项目模板" ASP.NET核心Web应用程序"并选择" React.js"在下面的窗口中。

screenshot

此时一切正常。

如果我在antd中添加package.json(" antd":" 3.1.0")并在某些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模板,而且我没有任何错误。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

看起来{{ "Login": "JonSnow66", "BirthDate": "1572 2 16", "Desc": "I know nothing", "Name": "Jon Snow", "Type": "Admin", "Password": "LetItSnow", "Img": "/9j/4<BASE64>/Z\r\n", "Email": "Jon.Snow@wall.com" }: ""} 库有一个peer dependency of react >= 16,但是,就像你说的那样,Visual Studio 2017会生成一个带有反应版本15.2.2的repo。

一种解决方案是将您的antd(实际上是您的react,但您应该更改两者)更改为最新版本,截至目前为16.3.2。这是@Zack建议的,可能是更好的解决方案。请注意,如果您要升级@types/react版本号,则可能还应升级react版本和react-dom版本。

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