无法在Angular 5中解码下载的字体

时间:2018-10-26 12:50:43

标签: spring angular typescript font-awesome

编辑:我可以相对清楚地说,这是我的Spring应用程序存在的问题。将其上传到我的test-firebase中时,不会触发这样的警告。

亲爱的编码员...

当我说时,请相信我,我确实尝试过解决别人问题中发布的许多其他解释。这只是一个非常奇怪的案例。

我想尝试在Spring后端中部署Angular 5应用程序。确实是一个看起来像这样的准系统设置...

 @SpringBootApplication
public class AngularApplication extends SpringBootServletInitializer {

    @Configuration
    @EnableConfigurationProperties({ ResourceProperties.class })
    public class WebMvcConfig implements WebMvcConfigurer {

        @Autowired
        private ResourceProperties resourceProperties = new ResourceProperties();

        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {

            long cachePeriod = resourceProperties.getCache().getPeriod().getSeconds();

            final String[] staticLocations = resourceProperties.getStaticLocations();                   
            final String[] indexLocations = new String[staticLocations.length];

            registry.addResourceHandler(
                    "/**/*.css", 
                    "/**/*.js")
                    .addResourceLocations(staticLocations)
                    .setCacheControl(CacheControl.maxAge(cachePeriod, TimeUnit.SECONDS));

            registry.addResourceHandler(
                    "/**/*.html", 
                    "/**/*.json", 
                    "/**/*.bmp", 
                    "/**/*.jpeg", 
                    "/**/*.jpg", 
                    "/**/*.png",
                    "/**/*.ttf", 
                    "/**/*.svg",
                    "/**/*.eot",
                    "/**/*.woff",
                    "/**/*.woff2"
                    )
                    .addResourceLocations(staticLocations)
                    .setCacheControl(CacheControl.maxAge(60, TimeUnit.SECONDS));

            registry.addResourceHandler("/**").addResourceLocations(indexLocations).resourceChain(true)
                    .addResolver(new PathResourceResolver() {
                        @Override
                        protected Resource getResource(String resourcePath, Resource location) {
                            return location.exists() && location.isReadable() ? location : null;
                        }
                    });
        }
    }
    public static void main(String[] args) {
        SpringApplication.run(AngularApplication.class, args);
    }

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(BizviewAngularApplication.class);
    }

}

我对应用程序进行了有效的构建,将其放在Spring应用程序的静态文件夹中并运行它。 外观和感觉都很棒。没错,我几乎可以在所有浏览器上看到我的页面。 Edge,Opera,Firefox,但是只有在Chrome浏览器中,我弹出一个警告,当重新绘制窗口时,警告会越来越多...

enter image description here

Failed to decode downloaded fontOTS parsing error: invalid version tag。 我删除了font-awesome并重新安装了4.7,但这没有帮助。奇怪的是,字体超赞的图标都很好。我可以看到它们,并且项目中没有任何缺失。我的意思是,这是我推出的第一个应用程序,所以我可能会遗漏一些东西,但这看起来像是一个奇怪的特定问题

1 个答案:

答案 0 :(得分:1)

在带有重写规则的IIS 8.5上托管时,我遇到了这个问题。据我了解,问题在于文件扩展名实际上被解释为.woff?v=4.7.0

因此,我最终将其添加到字体扩展列表中。我对Spring一无所知,但是从您的清单中,我认为您应该将其添加到registry.addResourceHandler

registry.addResourceHandler(
    "/**/*.html", 
    "/**/*.json", 
    "/**/*.bmp", 
    "/**/*.jpeg", 
    "/**/*.jpg", 
    "/**/*.png",
    "/**/*.ttf", 
    "/**/*.svg",
    "/**/*.eot",
    "/**/*.woff",
    "/**/*.woff?v=4.7.0",
    "/**/*.woff2"
)