使用Go递归地提供静态文件。

huangapple go评论83阅读模式
英文:

Serving static files recursively with go

问题

我正在使用SvelteKit作为我正在开发的应用程序的前端。我在svelte.config.js中选择了一个静态适配器,它将所有必要的组件输出为静态文件。

这是我的静态目录的结构。

最上层的文件可以加载,但是static/_app目录中的文件无法加载。

func main() {
    router := mux.NewRouter()
    router.Handle("/", http.FileServer(http.Dir("static")))
    router.HandleFunc("/large-files", largeFilesHandler).Methods("OPTIONS", "POST")
    router.HandleFunc("/delete-file", deleteFileHandler).Methods("DELETE", "OPTIONS")
    logrus.SetLevel(logrus.ErrorLevel)
    err := http.ListenAndServe(":8000", router)
    if err != nil {
        logrus.Fatal(err)
    }
}

在我的svelte.config.js中:

import adapter from '@sveltejs/adapter-static';
import preprocess from 'svelte-preprocess';

const config = {
    preprocess: preprocess(),
    kit: {
        adapter: adapter({
            pages: '../static',
            assets: '../static',
        }),
        prerender: { default: true }
    }
};

export default config;

更新:

如果我删除HTML文件,我可以得到目录列表,但是所有这些选项都会返回404错误。

使用Go递归地提供静态文件。

英文:

I'm using sveltekit as my frontend for an app I'm working on. I've chosen a static adapter in the svelte.config.js which outputs all necessary components as static files.
Here is the structure of my static directory.
使用Go递归地提供静态文件。

The upper most files load, however, files in static/_app do not

func main() {
	router := mux.NewRouter()
	router.Handle("/", http.FileServer(http.Dir("static")))
	router.HandleFunc("/large-files", largeFilesHandler).Methods("OPTIONS", "POST")
	router.HandleFunc("/delete-file", deleteFileHandler).Methods("DELETE", "OPTIONS")
	logrus.SetLevel(logrus.ErrorLevel)
	err := http.ListenAndServe(":8000", router)
	if err != nil {
		logrus.Fatal(err)
	}

}

And in my svelte.config.js

import adapter from '@sveltejs/adapter-static';
import preprocess from 'svelte-preprocess';

/** @type {import('@sveltejs/kit').Config} */
const config = {
	// Consult https://github.com/sveltejs/svelte-preprocess
	// for more information about preprocessors
	preprocess: preprocess(),
	kit: {
		adapter: adapter({
			pages: '../static',
			assets: '../static',
		})
		,
		prerender: { default: true }
	}
};

export default config;

Update:

If I remove the html files, I get the directory list, but all of these options fail with a 404

使用Go递归地提供静态文件。

答案1

得分: 2

mux以不同的方式处理静态文件。

router.PathPrefix("/").Handler(http.FileServer(http.Dir("./static")))
英文:

mux handles static files differently.

	router.PathPrefix("/").Handler(http.FileServer(http.Dir("./static")))

huangapple
  • 本文由 发表于 2022年8月26日 18:33:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/73499667.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定