Spring Boot 3集成springdoc-openapi-ui出现语法错误求助
加载http://localhost:8080/swagger-ui/index.html时,控制台抛出以下错误:
swagger-ui-bundle.js:2 Uncaught SyntaxError: Invalid or unexpected token (at swagger-ui-bundle.js:2:537471)
swagger-ui-standalone-preset.js:2 Uncaught SyntaxError: Invalid or unexpected token (at swagger-ui-standalone-preset.js:2:147026)
swagger-initializer.js:5 Uncaught ReferenceError: SwaggerUIBundle is not defined
at window.onload (swagger-initializer.js:5:3)
window.onload @ swagger-initializer.js:5
load (async)
(anonymous) @ swagger-initializer.js:1
当前pom.xml配置片段:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.6</version> <relativePath /> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </dependency> <!-- SWAGGER --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
已尝试更换依赖版本、调整插件配置,问题仍未解决。
解决方案
1. 对齐版本兼容性
Spring Boot 3.1.x对应的springdoc-openapi-starter-webmvc-ui推荐版本为2.2.0及以上,2.0.0版本存在兼容性问题。修改pom.xml中的swagger依赖版本:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.2.0</version> </dependency>
2. 清理缓存并重构
- 执行
mvn clean install清理本地仓库中损坏的依赖包,重新下载完整的swagger-ui静态资源 - 清空浏览器缓存或使用无痕模式访问,避免加载旧缓存文件
3. 检查静态资源访问配置
若项目自定义了资源拦截器或静态资源路径,需确保swagger-ui资源可被正确访问:
- 确认
application.yml/application.properties中未禁用静态资源映射 - 若有自定义
WebMvcConfigurer,添加swagger资源映射规则:
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/springdoc-openapi-ui/"); } }
4. 排除冲突依赖
检查是否存在旧版swagger相关依赖(如springfox),若有需排除避免冲突:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </exclusion> </exclusions> </dependency>
内容的提问来源于stack exchange,提问作者Martin Spindler

