我在PhpStorm(2019.3.1)中使用React(16.12.0)。
我要导入的包是react-router-dom(5.1.2)
我将编写以下导入:
import { NavLink, Switch } from "react-router-dom";
这两个软件包都可以通过webpack / babel正确导入,并且当我同时使用Switch和NavLink时,页面可以正确呈现。
但是纯粹从IDE的角度来看,我会收到有关Switch的警告: Cannot resolve symbol 'Switch'
这很奇怪,因为它显然在那儿,我检查了一下/node_modules/react-router-dom
并Switch.js
在那儿。
奇怪的是,在PhpStorm的先前版本上(在进行几次更新和插件导入以及其他更改之前),PhpStorm准确地找到了Switch导入。
我最近没有更新react-router-dom,正在使用其最新的稳定版本。
关于为何可能缺少Switch的任何想法?
编辑: 我已经意识到这可能是因为PhpStorm难以导入commonJS模块。
我尝试将Javascript编译方法从React JSX更改为ECMA6。这没有用。
我还尝试导入一些用于react-router-dom的构建库,该库对于识别Route
导入很奇怪,但不是Switch
。
我还尝试了使PhpStorm缓存无效并重新启动应用程序,但是那也不起作用。
编辑2:
根据一个答案,我想在光标位于内部的情况下使用option + enter(在Windows上为alt + enter)react-router-dom
来尝试安装打字稿包,但我没有得到与JetBrains上所示的相同的建议操作网站:https://www.jetbrains.com/help/webstorm/configuring-javascript-libraries.html
它暗示的只是将单引号转换为双引号。
另外我已经安装了@ types / react-router-dom。也许我还缺少另一个?
编辑3:
正确的答案是要安装@types/react-router
。出于某种原因,这@types/react-router-dom
显然不是解决问题的办法。
node_modules/react-router-dom/esm/react-router-dom.js
出口BrowserRouter
,HashRouter
,Link
和NavLink
,但不出口Switch
,它没有明确定义存在。为了更好地完成/提示类型,可以为该软件包安装Typescript存根:将光标放在"react-router-dom"
import语句中,点击Alt+Enter
,选择Install TypeScript定义以获取更好的类型信息:
弄清楚了!我安装了@ types / react-router,就成功了!