swaggo / gin-swagger

gin middleware to automatically generate RESTful API documentation with Swagger 2.0.
MIT License
3.66k stars 266 forks source link

SwaggerUIBundle is not defined #252

Open auribuo opened 1 year ago

auribuo commented 1 year ago

Hi, i set up gin-swagger as described in the README.md. Problem is that when i navigate to the route i get an error telling Uncaught ReferenceError: SwaggerUIBundle is not defined. Before that i get warnings that both “http://localhost:8080/swagger/swagger-ui-bundle.js” and “http://localhost:8080/swagger/swagger-ui-standalone-preset.js” failed to load.

Here is the code I wrote

func Start() error {
    // TODO config
    docs.SwaggerInfo.BasePath = "/api"
    docs.SwaggerInfo.Title = "apisense"
    docs.SwaggerInfo.Version = "1.0.0"

    gin.SetMode(gin.ReleaseMode)

    router := gin.New()
    router.Use(middleware.CORS())
    router.Use(log.GinLogger())
    router.Use(gin.Recovery())
    router.Use(middleware.Limiter())

    api := router.Group("/api")
    api.GET("/health", controllers.GetHealth)
    api.GET("/reports", controllers.AllReports)
    api.GET("/reports/:id", controllers.Report)
    api.GET("/ws", controllers.Ws)

    router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

    srv := &http.Server{
        Addr:    ":8080",
        Handler: router,
    }

    done := make(chan os.Signal, 1)
    signal.Notify(done, unix.SIGINT, unix.SIGTERM)

    go func() {
        if err := srv.ListenAndServe(); err != nil {
            log.ApiLogger.Error(err.Error())
        }
    }()

    log.ApiLogger.Info("api service started")

    <-done

    ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
    defer cancel()

    log.ApiLogger.Info("stopping api service")

    if err := srv.Shutdown(ctx); err != nil {
        err = errors.CannotStopApiServiceError.Wrap(err, "cannot stop api service")
    }

    return nil
}

Here is the console output: image

RadientBrain commented 1 year ago

Maybe try putting router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) just after you define your router or change it to api.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)).

AK-blank commented 1 year ago

i had the same problem! image image

gmlewis commented 2 days ago

I'm seeing the same issue using gofiber v2.

The weird thing is that the code below has been working for over a year without errors, and suddenly last week stopped working:

    swaggerURL := fmt.Sprintf("%v/swagger", os.Getenv(serverBaseURLEnvVar))
    app.Get(swaggerURL, fiberSwagger.WrapHandler)
    app.Get(swaggerURL+"/", fiberSwagger.WrapHandler)
    app.Get(swaggerURL+"/*", fiberSwagger.WrapHandler)