Skip to content

AssetFS is used before overwrite it! #177

Description

Hi guys,

Hope you are doing well !

I have this error while running the demo.

WARNING: AssetFS is used before overwrite it!
goroutine 1 [running, locked to thread]:
runtime/debug.Stack(0x2e, 0x0, 0x0)
	/usr/local/Cellar/go/1.14/libexec/src/runtime/debug/stack.go:24 +0x9d
runtime/debug.PrintStack()
	/usr/local/Cellar/go/1.14/libexec/src/runtime/debug/stack.go:16 +0x22
github.com/qorpress/qorpress-example/vendor/github.com/qorpress/assetfs.SetAssetFS(0x771e258, 0x57aa420)
	/Users/lucmichalski/go/src/github.com/qorpress/qorpress-example/vendor/github.com/qorpress/assetfs/assetfs.go:33 +0xc5
github.com/qorpress/qorpress-example/pkg/config/bindatafs.init.0()
	/Users/lucmichalski/go/src/github.com/qorpress/qorpress-example/pkg/config/bindatafs/bindatafs.go:26 +0x5d
package main

import (
	"context"
	"flag"
	"fmt"
	"net/http"
	"os"
	"path/filepath"

	"github.com/go-chi/chi"
	"github.com/go-chi/chi/middleware"
	"github.com/qorpress/admin"
	"github.com/qorpress/publish2"
	"github.com/qorpress/qor"
	"github.com/qorpress/qor/utils"

	"github.com/qorpress/qorpress-example/pkg/app/account"
	adminapp "github.com/qorpress/qorpress-example/pkg/app/admin"
	"github.com/qorpress/qorpress-example/pkg/app/api"
	"github.com/qorpress/qorpress-example/pkg/app/home"
	"github.com/qorpress/qorpress-example/pkg/app/pages"
	"github.com/qorpress/qorpress-example/pkg/app/posts"
	"github.com/qorpress/qorpress-example/pkg/app/static"
	"github.com/qorpress/qorpress-example/pkg/config"
	"github.com/qorpress/qorpress-example/pkg/config/application"
	"github.com/qorpress/qorpress-example/pkg/config/auth"
	"github.com/qorpress/qorpress-example/pkg/config/bindatafs"
	"github.com/qorpress/qorpress-example/pkg/config/db"
	_ "github.com/qorpress/qorpress-example/pkg/config/db/migrations"
	"github.com/qorpress/qorpress-example/pkg/utils/funcmapmaker"
)

func main() {
	cmdLine := flag.NewFlagSet(os.Args[0], flag.ContinueOnError)
	compileTemplate := cmdLine.Bool("compile-templates", false, "Compile Templates")
	cmdLine.Parse(os.Args[1:])

	var (
		Router = chi.NewRouter()
		Admin  = admin.New(&admin.AdminConfig{
			SiteName: "QORPRESS DEMO",
			Auth:     auth.AdminAuth{},
			DB:       db.DB.Set(publish2.VisibleMode, publish2.ModeOff).Set(publish2.ScheduleMode, publish2.ModeOff),
		})
		Application = application.New(&application.Config{
			Router: Router,
			Admin:  Admin,
			DB:     db.DB,
		})
	)

	funcmapmaker.AddFuncMapMaker(auth.Auth.Config.Render)

	Router.Use(func(handler http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
			// for demo, don't use this for your production site
			w.Header().Add("Access-Control-Allow-Origin", "*")
			handler.ServeHTTP(w, req)
		})
	})

	Router.Use(func(handler http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
			req.Header.Del("Authorization")
			handler.ServeHTTP(w, req)
		})
	})

	Router.Use(middleware.RealIP)
	Router.Use(middleware.Logger)
	Router.Use(middleware.Recoverer)
	Router.Use(func(next http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
			var (
				tx         = db.DB
				qorContext = &qor.Context{Request: req, Writer: w}
			)
			if locale := utils.GetLocale(qorContext); locale != "" {
				tx = tx.Set("l10n:locale", locale)
			}
			ctx := context.WithValue(req.Context(), utils.ContextDBName, publish2.PreviewByDB(tx, qorContext))
			next.ServeHTTP(w, req.WithContext(ctx))
		})
	})

	Application.Use(api.New(&api.Config{}))
	Application.Use(adminapp.New(&adminapp.Config{}))
	Application.Use(home.New(&home.Config{}))
	Application.Use(posts.New(&posts.Config{}))
	Application.Use(account.New(&account.Config{}))
	Application.Use(pages.New(&pages.Config{}))
	Application.Use(static.New(&static.Config{
		Prefixs: []string{"/system"},
		Handler: utils.FileServer(http.Dir(filepath.Join(config.Root, "public"))),
	}))
	Application.Use(static.New(&static.Config{
		Prefixs: []string{"javascripts", "stylesheets", "images", "dist", "fonts", "vendors", "favicon.ico"},
		Handler: bindatafs.AssetFS.FileServer(http.Dir(filepath.Join("public")), "javascripts", "stylesheets", "images", "dist", "fonts", "vendors", "favicon.ico"),
	}))

	if *compileTemplate {
		bindatafs.AssetFS.Compile()
	} else {
		fmt.Printf("Listening on: %v\n", config.Config.Port)
		if config.Config.HTTPS {
			if err := http.ListenAndServeTLS(fmt.Sprintf(":%d", config.Config.Port), ".config/certs/server.crt", ".config/certs/server.key", Application.NewServeMux()); err != nil {
				panic(err)
			}
		} else {
			if err := http.ListenAndServe(fmt.Sprintf(":%d", config.Config.Port), Application.NewServeMux()); err != nil {
				panic(err)
			}
		}
	}
}

Ref. https://github.com/qorpress/qorpress-example

Any ways to fix it ? Thanks for your insights and inputs up-front.

Cheers,
X

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions