我从事Web开发的日子是在.net 3或4中,现在我正在尝试提升自己的技能。
因此,我安装了.net core 2.1.5和react模板,然后在Visual Studio中创建了一个react项目。但是,我需要努力解决一些基本问题:
在startup.cs中,我有以下几行:
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
建议spa.UseReactDevelopmentServer(npmScript: "start");
仅用于开发环境,那么在生产环境中我应该做什么?
如果我仅对此行进行注释,它将引发错误
处理请求时发生未处理的异常。 InvalidOperationException:SPA默认页面中间件无法 返回默认页面“ /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"
}
答案 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()
。