Webpack-dev-server 显示具有正确路由的完整应用程序,但路由在本地主机上不起作用

Webpack-dev-server shows full app with proper routing, but routing doesn't work on localhost

我正在为公司开发一个简单的 React 应用程序(所以我不能 post 编写太多代码),并且一直在使用 webpack-dev-server 进行热交换以进行开发更快速。当我 运行 我的应用程序在 webpack-dev-server 上用于开发目的时,我能够使用整个应用程序和路由,就像在生产中一样。当我尝试在 localhost:8080 上 运行 我的同一个应用程序时,我能够看到我的基本登录屏幕,然后是主页,但在那之后,路由的 none 工作并且我一直请参阅 "Cannot get /home" 等,这是一种新行为。

我发现的每个堆栈溢出问题都解决了完全相反的问题,其中 webpack-dev-server 没有显示 localhost 的所有内容,而且我发现和尝试过的都没有用。

我已经尝试重新生成 bundle.js 以确保所有的更改都被拾取,并且我检查了我的 webpack.config.js 以确保那里没有任何变化(除了我的几周前为支持热交换而添加的内容)。 Chrome Inspector 没有显示错误,所以我真的不知道为什么应用程序在本地主机上坏了,但在 webpack-dev-server 上却没有。

最后,我想要的只是让我的 React 应用程序在本地主机上看起来与在开发服务器上看起来一样,而对于我的生活,我无法弄清楚为什么它不会。

webpack.config.js:

module.exports = {
    entry: [
        './src/index.js'
    ],
    output: {
        path: __dirname+'/public',
        publicPath: '/',
        filename: 'bundle.js'
    },
    module: {
        loaders: [{
            exclude: /node_modules/,
            loader: 'babel',
            query: {
                presets: ['react', 'es2015', 'stage-1']
            }
        },{
            test: /\.(s*)css$/,
            loader: combineLoaders([
                {
                    loader: 'style-loader'
                }, {
                    loader: 'css-loader',
                    query: {
                        modules: true,
                        localIdentName: '[name]__[local]___[hash:base64:5]'
                    }
                }, {
                    loader: 'sass-loader'
                },
            ])
        },
        ],
    },
    resolve: {
        extensions: ['', '.js', '.jsx']
    },
    devServer: {
        historyApiFallback: true,
        contentBase: './'
    },
    watch: true,
    watchOptions: {
        aggregateTimeout:300,
        poll: 1000,
        ignored: /node_modules/
    }
};

找到我的问题 - 它存在于 server.js。 这个问题的最佳答案有帮助:

需要更换:

app.get(['/', '/bom', '/items', '/products', '/segmentation'], function (req, res) {
    res.sendFile('index.html', {root: __dirname});
});

与:

app.get('*',function(req,res) {
    res.sendFile(path.resolve(__dirname,'public/index.html'));
});

这解决了我的本地主机渲染问题。