“Linux 下 Swagger 报错”这个现象太宽泛了,因为 Swagger 本身只是一套规范/工具,在 Linux 上报错通常不是“Swagger 错了”,而是运行环境、依赖、配置或代码的问题。
下面按常见场景给你归纳一下,基本能覆盖 90% 的情况:
80 / 443 等特权端口,但没用 root现象
bind: permission denied
address already in use
解决
sudo netstat -tunlp | grep 8080
sudo ufw allow 8080
Windows 不区分大小写,Linux 区分
常见错误
@GetMapping("/Swagger") 但访问 /swaggerswagger.json 写成 Swagger.jsonSwagger UI 或生成的 swagger.json 无法读取
ls -l swagger.json
chmod 644 swagger.json
例如:
unzipfontconfiglibfontconfig常见报错
Failed to load API definition
Unable to infer base url
原因
@EnableOpenApi / 错误配置/v3/api-docs解决
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI();
}
}
并放行:
spring:
autoconfigure:
exclude:
- org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
常见报错
ENOENT: no such file or directory
原因
swagger.json 路径写死成 Windows 路径正确写法
const path = require('path');
const yaml = require('js-yaml');
const fs = require('fs');
const file = path.join(__dirname, 'swagger.yaml');
常见报错
原因
localhost 在容器里不是宿主机请你补充以下信息,我可以直接告诉你具体原因:
用的什么技术?
完整报错信息(最关键)
Linux 环境
Swagger 版本
Linux 下 Swagger 报错,99% 不是 Swagger 的问题,而是路径、权限、端口、大小写或代理配置的问题。
你可以把报错贴出来,我直接帮你“对号入座”。