Spring Boot 不提供 Vite dist/prod 构建资源,仅提供 index.html

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

我有一个 Java Spring Boot 后端,并配置了 Tomcat 服务器。

我有一个 React 前端,使用 Vite 打包,“vite build”将所有内容发送到“dist”目录。

我将此“dist”目录移至“src/main/resources/static/”目录,以便由 Spring 自动提供服务。这是在 Docker 容器中运行的。

我可以打开我的主页。然而,前端并没有获取 Vite 打包的任何 CSS,尽管我可以在

dist
下的
dist/assets/*
文件夹中看到它,并且我的
dist/index.html
中到该
assets/index-${HASH}.css
文件的路径是正确。

这只发生在我的应用程序中来自index.html的子路由上。值得注意的是,当我刷新页面时,我得到一个“Whitelabel错误页面”。就像我的应用程序无法识别,例如,

https://localhost/route/routetwo
应该是从入口点
index.html
开始的持久路径。

这个问题的奇怪之处在于,当在不同的 Docker 容器中运行

vite preview
时,一切都正常工作,这使得故障排除变得困难。我能够使用正确的 CSS 查看子路由,刷新页面没有问题,等等。

在“开发人员工具 -> 源”中,运行

index.html
时,我看到了子路由
vite preview
的内容,但在尝试将其作为 Spring 的一部分提供服务时却看不到。这是关于 Spring 如何与我的 vite 构建交互的问题。

有什么想法吗?

我尝试过很多事情,包括但不限于:

  • 将 dist 从
    vite preview
    容器中拉出,将其粘贴到我的后端
    src/main/resources/static
    目录中并以这种方式提供服务,而不是使用每个 Docker 容器动态构建。没有骰子,仍然没有找到我的
    /assets/index-${HASH}.css
  • 与上面的操作相同,但将
    assets/*
    从资产目录中移出并移至与
    src/main/resources/static/index.html
    相同的目录中,更改
    index.html
    中的路径。没有结果。
  • 进行大量测试以确保这不是我的 Docker 构建的目录问题。确认成功的容器和不成功的容器基本上没有区别,除了一个使用
    vite preview
    ,另一个使用 Spring 静态资源服务。
java reactjs spring spring-boot vite
1个回答
0
投票

也有类似的问题。如果我没有经过身份验证,我会收到一个“whitelabel”/自定义错误页面。原因是我的 Spring Boot 安全配置

PUBLIC_URLS
丢失了:
/assets/**
,最终导致 Vite 无法加载 .js 文件。

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