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

非JSX方式调用BrowserRouter提示未定义,求问题排查

解决BrowserRouter未定义的问题

问题出在UMD版本的react-router-dom的全局变量结构上——它所有的组件和API都挂载在ReactRouterDOM这个全局对象下,而不是直接暴露为独立的全局变量。你直接访问BrowserRouter自然会提示未定义。

修改你的脚本代码,通过ReactRouterDOM.BrowserRouter来访问即可:

<html>
    <head>
        <script src="https://unpkg.com/react@18.2.0/umd/react.development.js"></script>
        <script src="https://unpkg.com/react-dom@18.2.0/umd/react-dom.development.js"></script>
        <script src="https://unpkg.com/react-router-dom@6.6.1/dist/umd/react-router-dom.development.js"></script>
    </head>
    <body>
        <div id="root"></div>
        <script type="application/javascript">
            console.log(React);
            console.log(ReactDOM);
            console.log(React.StrictMode);
            // 改为通过ReactRouterDOM访问BrowserRouter
            console.log(ReactRouterDOM.BrowserRouter);
            
            // 示例:用React.createElement渲染BrowserRouter
            const root = ReactDOM.createRoot(document.getElementById('root'));
            root.render(
                React.createElement(React.StrictMode, null,
                    React.createElement(ReactRouterDOM.BrowserRouter, null,
                        React.createElement(ReactRouterDOM.Routes, null,
                            React.createElement(ReactRouterDOM.Route, { 
                                path: "/", 
                                element: React.createElement('h1', null, 'Hello React Router!') 
                            })
                        )
                    )
                )
            );
        </script>
    </body>
</html>

同理,react-router-dom里的其他组件(比如Routes、Route、Link等)也都需要通过ReactRouterDOM对象来访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:25:06