在我的本地主机中,我的 swagger UI 运行良好。本地主机:3030/文档 此 UI 在服务器上也可以工作,但从今天开始在服务器上无法工作 https://digitalpathshalabd.com/documentation
错误
我遇到了同样的“SwaggerUIBundle 未定义”和空白页面。此外,问题仅出现在服务器上,而不是本地。它在过去也曾发挥过作用。 然后当我ctrl+f5本地swagger页面时,它也出现在本地。
对于我们来说,配置顺序似乎被交换了。 对我来说,修复方法是在 swagger init 之后移动 app.UseRouting()
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Procedure Service V1");
c.RoutePrefix = "";
});
app.UseRouting();
我正在使用 org.springdoc:springdoc-openapi-ui:1.6.9 版本并面临这个问题。
我检查了https://www.npmjs.com/package/swagger-ui并为较低的swagger-ui版本3.0.21添加了maven依赖项
<dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>3.0.21</version>
</dependency>
我发现“swagger-ui/index.html”没有引用“swagger-initializer.js”,而是它的源代码存在于index.html本身中(这是指宠物店的样板)
因此,在我的 Spring boot 类路径 resources/public 文件夹中,我复制了旧的 swagger dist index.html 文件(其中包含初始化程序代码)并进行了以下更改
<script charset="UTF-8" src="./swagger-ui/swagger-ui-bundle.js"></script>
<script charset="UTF-8" src="./swagger-ui/swagger-ui-standalone-preset.js"> </script>
检查你的 swagger 中间件配置是否正确?
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});
services.AddControllers();
}
这会将 Swagger 生成器添加到服务集合中。 在Configure()方法中,让我们启用中间件来为生成的JSON文档和Swagger UI提供服务:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
}
当 SwaggerUIBundle 对象在当前上下文中不可用时,通常会出现错误“Uncaught ReferenceError:SwaggerUIBundle 未定义”,这可能是由于 Swagger UI JavaScript 文件未正确加载所致。
如果使用隐身模式时问题得到解决,则表明浏览器缓存或某些扩展程序可能会干扰 Swagger 的 JavaScript 文件的加载。