将 Vaadin 14.0.10 应用程序更新到 14.5.4 会导致从 /VAADIN/ 加载的资源出现 MIME 类型错误

Updating Vaadin 14.0.10 app to 14.5.4 results into MIME type error for resources loaded from /VAADIN/

我有一个带有 Spring 引导和 Spring 安全配置的 Vaadin 14.0.10 应用程序。我正在尝试将其更新到 14.5.4,但更新后,当我尝试加载应用程序时出现空白页面。服务器日志上没有错误,但在浏览器控制台上,显示两个错误:

Refused to execute script from 'http://localhost:8080/login' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

login:1 Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.

查看网络选项卡,似乎 webcomponents-loader.jsvaadin-bundle-*.cache.js 都获得状态 302“script/redirect”。两个文件都在 /VAADIN/build.

下提供

起初我认为这可能是 Spring 安全配置问题,但在我的 WebSecurityConfigurerAdapter 实施中,我有:

    @Override
    public void configure(WebSecurity web) throws Exception {

        web.ignoring().antMatchers(
                // Vaadin Flow static resources
                "/VAADIN/**",

                // the standard favicon URI
                "/favicon.ico",

                // the robots exclusion standard
                "/robots.txt",
                // and so on

...并且 /VAADIN/** 匹配器应该负责提供对有问题的文件的访问权限。

我已经尝试 运行 mvn clean 并且删除并重新填充 node_modules 无济于事。

问题是 webpack.generated.js,它被错误地存储在项目的 Git 存储库中。删除文件并重建项目解决了这个问题。尽管从某种意义上说这是一个“用户错误”,但在版本升级的情况下,该文件应该会自动覆盖,因为 webpack 输出路径已在 14.0 和 14.5 之间更改:https://github.com/vaadin/flow/issues/10932