Angular 4 抛出错误 EventSource 的响应有一个 MIME 类型 ("text/html") 在迁移到 .NetCore 2.0 后不是 "text/event-stream"

Angular 4 throwing error EventSource's response has a MIME type ("text/html") that is not "text/event-stream" after migrating to .NetCore 2.0

我有一个基于 Asp .Net Core 的现有 SPA(我使用 Yo generator-aspnetcore-spa 生成模板)。它工作得很好,但是在迁移到 .NetCore 2.0 之后它开始抛出错误:

EventSource's response has a MIME type ("text/html") that is not "text/event-stream". Aborting the connection.

据我所知,这个问题只影响更新任何文件后的自动刷新(据我所知,热模块更换)。所有其他东西都工作正常。

所以,问题是如何解决上面的错误?

我找到了解决办法,主要是.NetCore路由系统的问题,它正在接管并尝试处理请求,返回text/html,所以它正在发送实际的webpack_hmr热点文件.要修复它,您需要编辑 Startup.cs 文件中的 Configure 方法。

  1. 之前:

    // some code
    app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions {
                HotModuleReplacement = true                    
            });
    //some code
    
  2. 之后:

    // some code
    app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions {
                HotModuleReplacement = true,
                HotModuleReplacementEndpoint = "/dist/__webpack_hmr"                   
            });
    // some code
    

解决方案取自这个thread on GitHub

尝试将托管环境从生产环境更改为开发环境

  1. 检查您的托管环境是否设置为生产开发(Webpack HMR生产禁用)
  2. 将托管环境更改为开发环境。
    export ASPNETCORE_ENVIRONMENT=development 添加到您的 ~/.bash_profile~/.zshrc 文件。
    按照 link 进行更详尽的解释。
    因此你的输出应该是:

link 解释了如何更深入地更改环境。