Uncaught ReferenceError: SwaggerUIBundle не определен в window.onload
На моем локальном хосте мой чванливый интерфейс работал хорошо. localhost:3030/documentation Этот интерфейс также работал на сервере, но с сегодняшнего дня на сервере он не работает https://digitalpathshalabd.com/documentation
Ошибки
3 ответа
Я столкнулся с тем же «SwaggerUIBundle не определен» с пустой страницей. Также проблема только на сервере, а не локально. И это также работало в прошлом. Затем, когда я нажимаю ctrl +f5 на локальной странице чванства, она также появляется локальной.
Для нас оказалось, что порядок конфигурации был изменен. Для меня исправлением было перемещение app.UseRouting() после инициализации swagger
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();
Проверьте правильность настройки промежуточного программного обеспечения 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:
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");
});
}
Я использую версию org.springdoc:springdoc-openapi-ui:1.6.9 и столкнулся с этой проблемой.
Я проверил https://www.npmjs.com/package/swagger-ui и добавил зависимость maven для более низкой версии swagger-ui 3.0.21.
<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 classpath я скопировал старый файл swagger dist index.html (который имеет код инициализатора) и внес следующие изменения.
- Изменил часть URL-адреса, чтобы он указывал на мой URL-адрес API-документов. (например, /v3/api-docs)
- Добавлен «swagger-ui» к ссылкам src, так что пакеты/js swagger будут успешно вызываться из моего 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>
- Когда я обращался к index.html — http://{server}:{port}/index.html — я мог получить доступ к своему локальному документу Open API.