PhpStorm не может разрешить импорт пакетов, даже если он существует (response-router-dom) - PullRequest
0 голосов
/ 01 февраля 2020

Я использую React (16.12.0) с PhpStorm (2019.3.1).

Импортируемый мной пакет - response-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 (до нескольких обновлений, импорта плагинов и других изменений), импорт Switch был точно найден PhpStorm.

Я недавно не обновлял response-router-dom и использую его последнюю стабильную сборку.

Есть идеи, почему может отсутствовать Switch?

РЕДАКТИРОВАТЬ: Я понял, что это может быть связано с тем, что PhpStorm не удается импортировать общий JS модуль.

Я пытался изменить компиляцию Javascript Метод с React JSX на ECMA 6. Это не сработало.

Я также попытался импортировать некоторые библиотеки сборки дляact-router-dom, и это сработало для странного распознавания импорта Route, но не Switch.

Я также пытался сделать недействительным кеш PhpStorm и перезапустить приложение, но это тоже не сработало.

РЕДАКТИРОВАТЬ 2: В ответ я пытался использовать option + enter (alt + enter на windows), пока мой курсор находится в пределах react-router-dom, чтобы попытаться установить пакет машинописного текста, но я не получаю того же действия, как показано на веб-сайте JetBrains: https://www.jetbrains.com/help/webstorm/configuring-javascript-libraries.html

Все, что он предлагает - это переключать одинарные кавычки в двойные.

enter image description here

Также я уже установил @ типы / реагируют-маршрутизатор-DOM. Возможно, есть еще один, который мне не хватает?

enter image description here

РЕДАКТИРОВАТЬ 3: Правильный ответ был установить @types/react-router. По некоторым причинам @types/react-router-dom обманчиво НЕ то, что решает это.

1 Ответ

4 голосов
/ 02 февраля 2020

node_modules/react-router-dom/esm/react-router-dom.js экспортирует BrowserRouter, HashRouter, Link и NavLink, но не экспортирует Switch, там это явно не определено. Для лучшего завершения / подсказки типа вы можете установить заглушки Typescript для пакета: установите курсор на "react-router-dom" в операторе импорта, нажмите Alt+Enter, выберите Установить определения TypeScript для лучшей информации о типе: :

enter image description here

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

...