有关.net核心的新手问题,并做出反应

时间:2018-11-08 15:22:43

标签: reactjs asp.net-core

我从事Web开发的日子是在.net 3或4中,现在我正在尝试提升自己的技能。

因此,我安装了.net core 2.1.5和react模板,然后在Visual Studio中创建了一个react项目。但是,我需要努力解决一些基本问题:

  1. 在startup.cs中,我有以下几行:

            app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";
    
                if (env.IsDevelopment())
                {
                    spa.UseReactDevelopmentServer(npmScript: "start");
                }
            });
    

建议spa.UseReactDevelopmentServer(npmScript: "start");仅用于开发环境,那么在生产环境中我应该做什么?

如果我仅对此行进行注释,它将引发错误

  

处理请求时发生未处理的异常。   InvalidOperationException:SPA默认页面中间件无法   返回默认页面“ /index.html”,因为未找到它,并且没有   其他中间件处理了该请求。

  1. 运行项目时,从index.html的源代码中,我可以看到此行已添加到页面末尾。 <script type="text/javascript" src="/static/js/bundle.js"></script>

那么谁添加了这一行?是嵌入式React开发服务器还是实际上是构建过程?当我在packages.json中看到这些行时,因此我猜测是由npm构建创建了捆绑软件?如果是这种情况,我如何告诉它不要捆绑js,而是要在chrome中进行一些调试以学习代码。

  "scripts": {
    "start": "rimraf ./build && react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }

1 个答案:

答案 0 :(得分:1)

您应该能够在AddSpaStaticFiles()中使用ConfigureServices来指示应该在生产中使用已构建的静态React文件:

public void ConfigureServices(IServiceCollection services)
{
  // ...

  // In production, the React files will be served from this directory
  services.AddSpaStaticFiles(configuration =>
  {
    configuration.RootPath = "ClientApp/build";
  });

  // ...
}

我还要确保您在app.UseSpaStaticFiles();中有Configure()