You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Router v6路由Home组件时控制台报TypeError问题解决

报错原因

控制台抛出的Uncaught TypeError: Cannot read properties of undefined (reading 'string')根源是依赖使用错误:

  • 你同时安装了react-icon和react-icons两个包,其中react-icon是长期无人维护的废弃包,不兼容React 18版本,内部读取PropTypes时触发了undefined错误。
  • Navbar组件中从错误的包react-icon导入FaBars图标,直接触发了该报错,导致整个组件树渲染失败,Home组件无法正常显示。
  • 你现有的路由配置逻辑完全符合React Router v6的规范,不存在问题。
修复步骤
  • 卸载错误的废弃依赖,在项目根目录执行命令:
    npm uninstall react-icon
  • 修改Navbar.js的图标导入语句,react-icons的图标需要按对应图标集从子路径导入,Fa前缀的图标属于Font Awesome集合,将原来的导入行:
    import {FaBars,} from 'react-icon'
    替换为:
    import { FaBars } from 'react-icons/fa'
修正后可直接运行的Navbar.js代码
import React from 'react'
import './NavbarStyles.css'
import Logo from '../assets/logo.png'
import {Link} from 'react-router-dom'
import { FaBars } from 'react-icons/fa'

const Navbar = () => {
  return (
    <header>
        <nav className='navbar'>
            <div className='logo'>
                <Link to='/'><img src={Logo} alt='' /></Link>
            </div>
            <ul className='nav-menu'>
                <li className='nav-item'>
                    <Link to='/' className='nav-link'>Home</Link>
                </li>
                <li className='nav-item'>
                    <Link to='/' className='nav-link'>Services</Link>
                </li>
                <li className='nav-item'>
                    <Link to='/' className='nav-link'>Events</Link>
                </li>
                <li className='nav-item'>
                    <Link to='/' className='nav-link'>Contact</Link>
                </li>
            </ul>
            <div className='hamburger'>
                <FaBars />
            </div>
        </nav>
    </header>
  )
}

export default Navbar;

其余文件(index.js、App.js、Home.js)的代码逻辑无需修改,保存后重启开发服务即可正常渲染Home组件,控制台报错消失。

内容的提问来源于stack exchange,提问作者kaytee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 21:42:15