PhpStorm 无法解析包导入,即使它存在 (react-router-dom)
PhpStorm can't resolve package import even though it exists (react-router-dom)
我正在使用 React (16.12.0) 和 PhpStorm (2019.3.1)。
我导入的包是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 更改为 ECMA 6。那没有用。
我还尝试为 react-router-dom 导入一些构建库,这有助于识别 Route
奇怪但不是 Switch
.
的导入
我也试过使 PhpStorm 缓存失效并重新启动应用程序,但这也没有用。
编辑 2:
根据一个答案,当我的光标在 react-router-dom
内时,我尝试使用 option+enter(alt+enter on windows)来尝试安装打字稿包,但我没有得到相同的建议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
,未明确定义那里。
为了获得更好的 completion/type 提示,您可以为包安装 Typescript 存根:将光标放在导入语句中的 "react-router-dom"
上,点击 Alt+Enter
,选择 Install TypeScript definitions 以获得更好的类型信息::
我正在使用 React (16.12.0) 和 PhpStorm (2019.3.1)。
我导入的包是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 更改为 ECMA 6。那没有用。
我还尝试为 react-router-dom 导入一些构建库,这有助于识别 Route
奇怪但不是 Switch
.
我也试过使 PhpStorm 缓存失效并重新启动应用程序,但这也没有用。
编辑 2:
根据一个答案,当我的光标在 react-router-dom
内时,我尝试使用 option+enter(alt+enter on windows)来尝试安装打字稿包,但我没有得到相同的建议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
,未明确定义那里。
为了获得更好的 completion/type 提示,您可以为包安装 Typescript 存根:将光标放在导入语句中的 "react-router-dom"
上,点击 Alt+Enter
,选择 Install TypeScript definitions 以获得更好的类型信息::