未捕获的引用错误:SwaggerUIBundle 未在 window.onload 中定义

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

在我的本地主机中,我的 swagger UI 运行良好。本地主机:3030/文档 此 UI 在服务器上也可以工作,但从今天开始在服务器上无法工作 https://digitalpathshalabd.com/documentation

错误

img_error

swagger-ui hapi hapi-swagger
4个回答
3
投票

我遇到了同样的“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();

0
投票

我正在使用 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 文件(其中包含初始化程序代码)并进行了以下更改

  1. 更改了 url 部分以指向我的 api-docs url。 (例如/v3/api-docs)
  2. 在 src 引用中添加了“swagger-ui”,以便从我的 index.html 成功调用 swagger bundles/js
<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>
  1. 当我访问index.html - http://{server}:{port}/index.html - 我可以访问我的本地Open API 文档。

0
投票

检查你的 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");  
     });  
}  

0
投票

当 SwaggerUIBundle 对象在当前上下文中不可用时,通常会出现错误“Uncaught ReferenceError:SwaggerUIBundle 未定义”,这可能是由于 Swagger UI JavaScript 文件未正确加载所致。

如果使用隐身模式时问题得到解决,则表明浏览器缓存或某些扩展程序可能会干扰 Swagger 的 JavaScript 文件的加载。

  • 清除浏览器缓存:您的常规浏览会话可能包含过时或冲突的缓存文件。清除缓存并刷新页面可能会解决问题。
  • 隐身选项卡 -> 已修复:))
© www.soinside.com 2019 - 2024. All rights reserved.