Spring Boot 3.0项目加载index.js报404错误求助
排查Spring Boot + Mustache加载JS模块404错误的常见原因
1. 静态资源存放路径不对
Spring Boot默认将src/main/resources/static或public作为静态资源根目录,先确认index.js是否放在这两个目录中,别误放到Mustache模板所在的templates目录下。如果自定义过静态资源路径,去application.properties或application.yml里检查spring.web.resources.static-locations配置,确保指向正确目录,示例:
spring.web.resources.static-locations=classpath:/static/
2. Mustache模板里的JS引用路径错误
打开react.mustache模板,查看加载index.js的路径:
- 若使用相对路径
index.js,访问/react时浏览器会解析为/react/index.js,必然找不到资源。需改为绝对路径/index.js:
错误写法:
正确写法:<script type="module" src="index.js"></script><script type="module" src="/index.js"></script>
3. Controller路由映射异常
检查处理/react请求的Controller代码,确保返回的是Mustache模板名称,而非字符串或其他错误内容:
@GetMapping("/react") public String reactPage() { return "react"; // 对应templates/react.mustache文件 }
若Controller返回逻辑错误,模板加载异常会间接导致JS路径解析出错。
4. ES模块内部引用路径有误
如果index.js是ES模块,里面导入其他JS文件时,需使用基于静态资源根的绝对路径,避免相对路径导致的解析错误。比如要导入static/utils.js,应写:
import { foo } from '/utils.js';
若写成./utils.js,浏览器会从/react/路径下查找资源,同样会触发404。
5. 打包时静态资源未被包含
用Maven或Gradle打包后,打开target目录下的jar包,确认BOOT-INF/classes/static/index.js存在。若找不到该文件,检查pom.xml或build.gradle的资源配置,确保src/main/resources下的文件被正确打包进项目。
内容的提问来源于stack exchange,提问作者Flurrih
相关产品推荐
相关产品推荐

