PhpStorm可以';即使存在也无法解析包导入(react router dom)

PhpStorm可以';即使存在也无法解析包导入(react router dom),phpstorm,webstorm,node-modules,react-router-dom,jetbrains-ide,Phpstorm,Webstorm,Node Modules,React Router Dom,Jetbrains Ide,我将React(16.12.0)与PhpStorm(2019.3.1)一起使用 我要导入的包是react router dom(5.1.2) 我将编写以下导入: import { NavLink, Switch } from "react-router-dom"; 当我同时使用Switch和NavLink时,这两个包都由webpack/babel正确导入,页面正确呈现 然而,纯粹从IDE的角度来看,我得到了一个关于Switch的警告:无法解析符号“Switch” 这很奇怪,因为它显然就在那里,

我将React(16.12.0)与PhpStorm(2019.3.1)一起使用

我要导入的包是react router dom(5.1.2)

我将编写以下导入:

import { NavLink, Switch } from "react-router-dom";
当我同时使用Switch和NavLink时,这两个包都由webpack/babel正确导入,页面正确呈现

然而,纯粹从IDE的角度来看,我得到了一个关于Switch的警告:
无法解析符号“Switch”

这很奇怪,因为它显然就在那里,我签入了
/node\u modules/react router dom
并且
Switch.js
就在那里

奇怪的是,在PhpStorm的早期版本中(在几次更新、插件导入和其他更改之前),PhpStorm准确地找到了交换机导入

我最近没有更新react路由器dom,正在使用其最新的稳定版本

有没有关于为什么它可能缺少开关的想法

编辑: 我意识到这可能是因为PhpStorm在导入commonJS模块时遇到了困难

我尝试将Javascript编译方法从React JSX更改为ECMA 6。那没用

我还尝试为react router dom导入一些构建库,这有助于识别
路由
奇怪地导入,但不是
开关

我还尝试使PhpStorm缓存无效并重新启动应用程序,但也没有成功

编辑2: 根据回答,当光标位于
react router dom
内时,我尝试使用option+enter(windows上的alt+enter)来安装typescript软件包,但我没有得到JetBrains网站上显示的建议操作:

它所建议的就是将单引号转换为双引号

另外,我已经安装了@types/react路由器dom。也许我还缺少另一个

编辑3:
正确的答案是安装
@types/react路由器
。出于某种原因,
@types/react router dom
并不能解决这个问题。

node_模块/react router dom/esm/react router dom.js
导出
BrowserRouter
HashRouter
Link
NavLink
,但不导出
交换机,在那里没有明确定义。
为了更好地完成/类型提示,您可以为包安装Typescript存根:将光标放在导入语句中的
“react router dom”
,点击
Alt+Enter
,选择安装Typescript定义以获得更好的类型信息:


请看

找到了答案!我安装了@types/react路由器,成功了!上述答案并不完整。您必须同时安装这两种@type。react router和react router dom,以便完成类型解析。对于react-Route之类的组件,我不知道Alt+Enter的Mac等效值是多少,所以我在preferences窗口下载了包,它解决了这个问题。