嵌套的 React 路由器 4 路由在 Webpack 3 上不起作用

Posted

技术标签:

【中文标题】嵌套的 React 路由器 4 路由在 Webpack 3 上不起作用【英文标题】:Nested React router 4 routes not working on Webpack 3 【发布时间】:2017-12-21 08:20:52 【问题描述】:

正如标题所示,我无法获得类似的路线

<Route path="/events/:id" component=EventDetailRoute />

工作,正如我所读到的,似乎 index.html 中的包必须是绝对的,但是我 使用 HtmlWebpackPlugin 所以包作为相对路径注入.

我尝试将 webpack 的输出配置设置如下:

output: 
    path: path.resolve('dist'),
    filename: 'index_bundle.js',
    publicPath: '/'
,

但这也不起作用。

如果我尝试这条路线:http://localhost:8080/events/7,我在尝试查找 http://localhost:8080/events/index_bundle.js收到 404 错误 p>

这是我的 webpack.config

const path = require('path'),
    HtmlWebpackPlugin = require('html-webpack-plugin'),
    webpack = require('webpack');

const HtmlWebpackPluginConfig = new HtmlWebpackPlugin(
    template: './src/index.html',
    filename: 'index.html',
    inject: 'body'
)

module.exports = 
    entry: './src/index.js',
    output: 
        path: "/" + path.resolve('dist', 'build'),
        filename: 'index_bundle.js',
        publicPath: '/'
    ,
    devServer: 
        historyApiFallback: true,
        hot: true,
        publicPath: '/'
    ,
    module: 
        rules: [
            
                test: /\.jsx?$/,
                loader: 'babel-loader',
                exclude: /node_modules/
            ,
            
                test: /\.scss$/,
                use: [
                    
                        loader: 'style-loader'
                    ,
                    
                        loader: 'css-loader',
                        options: 
                            modules: true,
                            camelCase: 'dashes',
                            localIdentName: '[name]__[local]'
                        
                    ,
                    
                        loader: 'resolve-url-loader'
                    ,
                    
                        loader: 'sass-loader'
                    
                ]
            ,
            
                test: /\.css$/,
                use: [
                     loader: 'style-loader' ,
                     loader: 'css-loader' ,
                ]
            ,
            
                test: /\.(eot|svg|ttf|woff|woff2)$/,
                use: 
                    loader: 'file-loader?name=[name].[ext]&outputPath=fonts/',
                
            ,
            
                test: /\.(png|jpg)$/,
                use: 
                    loader: 'file-loader?name=[name].[ext]&outputPath=assets/',
                
            
        ]
    ,
    plugins: [
        HtmlWebpackPluginConfig,
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NamedModulesPlugin()
    ]

我正在使用 webpack 3.1.0、webpack-dev-server 2.5.1 和 react-router-dom 4.1.1

【问题讨论】:

您能描述一下您所说的不起作用吗?当您加载 / 并使用 &lt;Link to="events/2" /&gt; 时会发生什么 @azium 我已编辑问题以添加有关错误的更多详细信息 【参考方案1】:

&lt;base href="/" /&gt; 添加到 index.html 文件的头部标签

<head>
    <meta charset="utf-8">
    <title>React App Setup</title>
    <base href="/" />
</head>

【讨论】:

实时保存建议。谢谢 最好,你节省了我的时间。非常感谢。 你能简单解释一下答案吗?为什么它失败了,这条线如何解决问题?

以上是关于嵌套的 React 路由器 4 路由在 Webpack 3 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

react路由嵌套

在 react-router v4 中嵌套路由

React router 4 如何嵌套路由 /admin 和 /

react-router4 嵌套路由

十八React react-router4.x中:实现路由模块化以及嵌套路由父子组件传值

在 react-router v4 的嵌套路由中看到空白页