无法解析符号“路线”

问题描述 投票:0回答:6

我通过以下方式导入路线

import {Routes, Route, BrowserRouter} from 'react-router-dom'

我的包 JSON 是

"react-router-dom": "^6.0.2",

我正在使用 Pycharm。

npm list react-router-dom
返回
-- [email protected]

为什么会发生这种情况?我的前端是空白的。

reactjs pycharm jsx
6个回答
83
投票

当我升级到 react-router-dom:6.0.2 时,对于 Intellij 中的大多数 imports,我遇到了完全相同的“

无法解析符号
”问题。

正如 @DLH 所说,Jetbrains 产品是从 <system directory>/jetbrains/intellij/javascript/typings 而不是从项目的

node_modules
文件夹中
读取包的类型文件

正如 Jetbrains 的 Oksana Chumak 所说:

IDE 将一些流行库的类型下载到其配置文件夹,并使用它们来增强代码完成。

解决方案:

  1. 在jetbrains产品内,按两次shift打开搜索无处不在窗口,搜索registry并打开第一个结果。

  2. 在注册表中,查找 typescript.external.type.defintions.packages 键,并在该字段的 value 中,仅从值中删除react-router-dom字段。

  3. 另请转到文件 -> 使缓存无效 -> 选择“清除文件系统缓存和本地历史记录” -> 单击“无效并重新启动”

现在,

jetbrains产品将从项目的node_modules读取类型文件

,而不是从其
internal typings folder
中读取。将来,它也将
不会尝试下载和使用其他项目的intellij react-router-dom类型

感谢:@Mir-Ismaili 和@unfestive Chicken 帮助完成第三步。


1
投票
我刚刚在 WebStorm 中遇到了同样的问题。当我在 import 语句中对

'react-router-dom'

 进行 crtl-click 时,我发现它似乎对要注意哪个 index.ts.d 文件感到困惑。一个是按预期安装在我的项目的 node_modules 中的 6.0.2 版本。另一个位于 C:\Users[me]\AppData\Local\JetBrains\WebStorm2021.2\javascript ypings
eact-router-dom .3.2
ode_modules@types
eact-router-dom\index.d.ts.

我刚刚从 5.3.2 重命名了后一个 JetBrains 文件,认为它现在已经过时,并且此后它按预期工作。这不是最漂亮的解决方案,而且我只能确定它以后不会找到办法咬我的屁股。但至少目前来说,它是有效的。


1
投票
在 macOS 上,可能的解决方案是:

在您的应用栏中,按文件 -> 使缓存无效 -> 选择“清除文件系统缓存和本地历史记录” -> 单击“无效并重新启动”


0
投票
我们可以尝试删除

node_modules

 并删除该文件夹。
然后我们可以运行 
npm
 这将再次重新安装这些软件包。

之后,我会尝试实现

Router

 并查看它是否能够自行解决,即使它抱怨找不到该符号。

这样的东西应该有效:

<BrowserRouter> <Routes> <Route path='/*' element={ <App /> } /> </Routes> </BrowserRouter>
    

0
投票
我解决了黑屏问题,这是因为版本的原因,所以我必须根据

https://github.com/remix-run/react-router/blob/main/docs/getting-started/tutorial更改代码.md,但我仍然收到警告“无法解析符号‘路由’”,我正在使用最新版本的 Webstrom。

import React from "react"; import {BrowserRouter as Router, Routes, Route } from "react-router-dom"; import { Container } from "react-bootstrap"; import Header from "./components/Header"; import Footer from "./components/Footer"; import HomeScreen from "./screens/HomeScreen"; const App = () => { return( <Router> <Header /> <main className='py-3'> <Container> <Routes> <Route exact path="/" element={<HomeScreen />}/> </Routes> </Container> </main> <Footer /> </Router> ); } export default App;
    

0
投票
您必须为包安装 Typescript 存根

您有两个选择:

    使用IDE安装
    将光标放在导入语句中的“react-router-dom”上
  • 按 Alt+Enter
  • 选择安装 TypeScript 定义以获得更好的类型信息

    使用 npm 安装它
    在您的项目中打开cmd
  • npm 安装@types/react-router-dom
不要忘记从首选项 | 中删除 IDE 库语言和框架 | JavaScript |图书馆,如果您使用选项 1

© www.soinside.com 2019 - 2024. All rights reserved.