JHipster 8.1.0 PrimeNG 图标不会出现在生产中

问题描述 投票:0回答:1

试用新的 JHipster 8.1.0。我在以前的版本中成功使用了 PrimeNG 组件。在新的 JHipster 中,PrimeNG 组件似乎可以正常工作,但图标(primeicons)不会显示在生产环境中的浏览器中。

例如:

  • 创建一个简单的整体式角度项目。我选择 Gradle 作为构建工具,Angular 前端,以及 MariaDB 用于开发和生产。
  • 安装 PrimeNG 软件包:
npm i primeng
npm i primeicons
npm i @angular/[email protected]
npm i @angular/[email protected]
  • 通过添加以下内容更新
    vendor.scss
@import 'primeng/resources/primeng.min.css';
@import 'primeng/resources/themes/saga-blue/theme.css';
@import 'primeicons/primeicons.css';
  • 在主页添加 PrimeNG 选项卡组件。
    • home.component.ts
      中:
      • 在顶部添加:
        import { TabViewModule } from 'primeng/tabview';
      • @Component
        部分,将
        TabViewModule
        添加到导入中
    • home.component.html
      HTML 模板中,在顶部附近添加:
<p-tabView>
  <p-tabPanel header="Details" leftIcon="pi pi-id-card">In-depth details</p-tabPanel>
  <p-tabPanel header="Notes" leftIcon="pi pi-comment">Some lovely notes</p-tabPanel>
  <p-tabPanel header="Information" leftIcon="pi pi-info-circle">Additional information</p-tabPanel>
</p-tabView>

在开发中运行应用程序(IntelliJ 2023.3.2、Java 21、Gradle 8.5、Node 18.19.0、Firefox 121.0.1),一切都显示正确,并且看起来相当不错。

现在在生产中尝试一下:

  • 构建生产 JAR:
    ./gradlew -Pprod clean bootJar
  • 将 JAR 重命名为
    testapp.jar
  • 将 JAR 复制到服务器,然后启动应用程序:
    java -jar testapp.jar
  • 在浏览器中,导航至主页:
    http://localhost:8080

在生产中,PrimeNG 选项卡仍按预期工作 但是 图标不显示。此外,在浏览器控制台中我看到以下错误:

GET http://localhost:8080/primeicons.ba3f916dfb64be8c.woff2  [HTTP/1.1 401 Unauthorized 8ms]
downloadable font: download failed (font-family: "primeicons" style:normal weight:400 stretch:100 src index:1): status=2147746065 source: http://localhost:8080/primeicons.ba3f916dfb64be8c.woff2

GET http://localhost:8080/primeicons.f8b9e8a4e401b603.woff  [HTTP/1.1 401 Unauthorized 8ms]
downloadable font: download failed (font-family: "primeicons" style:normal weight:400 stretch:100 src index:2): status=2147746065 source: http://localhost:8080/primeicons.f8b9e8a4e401b603.woff

GET http://localhost:8080/primeicons.0112589c5695a9ed.ttf  [HTTP/1.1 401 Unauthorized 9ms]
downloadable font: download failed (font-family: "primeicons" style:normal weight:400 stretch:100 src index:3): status=2147746065 source: http://localhost:8080/primeicons.0112589c5695a9ed.ttf

downloadable font: no supported format found (font-family: "primeicons" style:normal weight:400 stretch:100 src index:5) source: (end of source list)

在以前版本的 JHipster(7.9.3 及更早版本)和开发中,一切都工作正常,所以我猜测要么我错过了一些东西,做了一些愚蠢的事情,要么这是新 JHipster 中的资源捆绑问题。

有什么想法吗?

angular jhipster primeng primeicons
1个回答
0
投票

天哪,通心粉!我有答案了。

JHipster 项目中的优秀人员已经提高了安全性,并锁定了所有“不”属于其代码库的内容。要查看 PrimeNG

primeicons
,请打开
SecurityConfiguration.java
,找到
authorizeHttpRequests()
部分(在我的代码中,位于第 60 行左右),然后在
.requestMatchers
中添加以下内容:
.requestMatchers(mvc.pattern("/*.tff"), mvc.pattern("/*.woff"), mvc.pattern("/*.woff2")).permitAll()

问题解决了。

© www.soinside.com 2019 - 2024. All rights reserved.