You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JHipster 8.1.0生产环境中PrimeNG图标不显示问题求助

解决方案

原因分析

生产环境下PrimeIcons字体文件返回401未授权,是因为JHipster 8的默认Spring Security配置拦截了根路径下的字体资源请求,而开发环境中资源未被拦截,所以显示正常。

方案1:修改Spring Security配置放行字体资源

找到项目中的SecurityConfiguration.java(路径通常为src/main/java/[你的包名]/config/SecurityConfiguration.java),在configure(HttpSecurity http)方法的授权规则中,添加对字体文件的匿名访问权限:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        // 保留原有配置...
        .authorizeHttpRequests(auth -> auth
            // 其他已有的授权规则
            .requestMatchers("/*.woff2", "/*.woff", "/*.ttf", "/primeicons.*").permitAll()
            .anyRequest().authenticated()
        );
}

这段代码会允许所有字体格式文件(woff2、woff、ttf)以及以primeicons开头的资源无需认证即可访问。

方案2:调整Angular资源打包配置

如果不想修改Security配置,可以让Angular将PrimeIcons字体打包到指定目录,并确保路径被Spring Security允许:

  1. 打开angular.json,在projects -> [你的项目名] -> architect -> build -> options -> assets数组中添加:
{
    "glob": "**/*",
    "input": "node_modules/primeicons/fonts",
    "output": "fonts/"
}
  1. 确保vendor.scss中的PrimeIcons导入路径正确:
@import 'primeicons/primeicons.css';

此时字体文件会被打包到fonts/目录下,JHipster默认允许/fonts/**路径的匿名访问,不会触发401错误。

验证

重新构建生产JAR:

./gradlew -Pprod clean bootJar

启动后再次访问首页,PrimeIcons应该能正常显示,浏览器控制台也不会再出现401错误。

内容的提问来源于stack exchange,提问作者Mike Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:35:14