React + React Router + ASP.NET MVC / IIS仅在生产中显示空白页?

时间:2019-04-01 16:36:06

标签: asp.net reactjs iis webpack

我正在使用ASP .NET MVC 4和在IIS上运行的React / React Router设置一个简单的应用程序。在本地IIS Express(由Visual Studio启动的实例)上运行时,一切工作正常,但是在生产环境中尝试运行时,出现空白页面。 没有JS错误或404错误,捆绑包已正确加载但未执行。

我完全不知道为什么它可以在由VS2013启动的本地IIS中工作,但在将项目作为现有IIS网站上的应用程序运行时却无法运行。任何帮助都将不胜感激。

我在RouteConfig.js中仅设置了一条通向Index.cshtml并使用View()的全包路由:

routes.MapRoute(
    name: "Default",
    url: "{*url}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

我的单个.cshtml文件是:

<div id="app"></div>
@Scripts.Render("~/Scripts/dist/bundle.js")

我的webpack.config.js文件是:

const path = require('path')

module.exports = {
    entry: path.resolve(__dirname, './src/js/App.jsx'),
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: 'bundle.js'
    },
    resolve: {
        alias: {
            Components: path.resolve(__dirname, './src/js/components'),
            Pages: path.resolve(__dirname, './src/js/pages'),
            Util: path.resolve(__dirname, './src/js/util'),
            Styles: path.resolve(__dirname, './src/scss/'),
        }
    },
    module: {
        rules: [
            {
                test: /\.jsx?$/,
                exclude: /node_modules/,
                use: {
                    loader: "babel-loader"
                }
            },
            {
                test: /\.s?css$/,
                use: [
                    {
                        loader: 'style-loader'
                    },
                    {
                        loader: 'css-loader'
                    },
                    {
                        loader: 'sass-loader'
                    }
                ]
            },
        ]
    }
};

1 个答案:

答案 0 :(得分:0)

结果证明这不是我的配置问题,而是我的React Router。开发人员站点的基本URL只是“ /”,但是我要部署到的版本的基本URL是“ / appName”。设置我的BrowserRouter的“基本名称”道具可以解决此问题。