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”没有导出成员“远程”