簡體   English   中英

未捕獲的 ReferenceError:SwaggerUIBundle 未定義在 window.onload

[英]Uncaught ReferenceError: SwaggerUIBundle is not defined at window.onload

在我的本地主機上,我的 swagger 用戶界面運行良好。 localhost:3030/documentation 此 UI 也在服務器上工作,但從今天開始在服務器上它不工作https://digitalpathshalabd.com/documentation

錯誤

圖像錯誤

我遇到了同樣的“SwaggerUIBundle 未定義”,但有一個空白頁。 此外,問題僅在服務器上而不是本地。 它在過去也有效。 然后當我ctrl +f5 本地招搖頁面時,它也出現在本地。

對我們來說,配置順序似乎被交換了。 對我來說,修復是在招搖初始化之后移動 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 類路徑資源/公共文件夾中,我復制了舊的 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 文檔。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM