温馨提示:本文翻译自stackoverflow.com,查看原文请点击:webstorm - PhpStorm can't resolve package import even though it exists (react-router-dom)
phpstorm react-router-dom webstorm node-modules jetbrains-ide

webstorm - PhpStorm无法解决软件包导入,即使它存在(react-router-dom)

发布于 2020-04-09 23:41:13

我在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-domSwitch.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显然不是解决问题的办法。

查看更多

提问者
willsmanley
被浏览
62
lena 2020-02-02 05:09

node_modules/react-router-dom/esm/react-router-dom.js出口BrowserRouterHashRouterLinkNavLink,但不出口Switch,它没有明确定义存在。为了更好地完成/提示类型,可以为该软件包安装Typescript存根:将光标放在"react-router-dom"import语句中,点击Alt+Enter,选择Install TypeScript定义以获取更好的类型信息

在此处输入图片说明

参见https://www.jetbrains.com/help/webstorm/2019.3/configuring-javascript-libraries.html#ws_jsconfigure_libraries_ts_definition_files