有用过 golang 的 packr 这个包吗?请教几个问题

2019-08-20 15:28:31 +08:00
 imherer

github 链接:github.com/gobuffalo/packr/tree/master/v2

我想用它把前端文件打包的 go 的 binary 文件里

参照官方文档的步骤,打包成功了,binary 也变大了许多,从文件大小上看应该是把前端文件给打进去了,但是我把前端文件删掉之后,访问就 404 了

难道还得保留前端文件吗?那这样的话打包还有什么意义呢?

Usage with HTTP:github.com/gobuffalo/packr/tree/master/v2#usage-with-http

3047 次点击
所在节点    Go 编程语言
15 条回复
AngryPanda
2019-08-20 15:31:49 +08:00
打包进去了,但是我估计你用的地方 PATH 也许需要改。。。
imherer
2019-08-20 15:47:50 +08:00
@AngryPanda
我打包之后,先保留前端文件,运行正常。 当我把前端文件删了或者把文件夹改个名字就 404 了
ChristopherWu
2019-08-20 15:48:35 +08:00
其实为什么有把 static file 怼进去二进制文件里的需求?
AngryPanda
2019-08-20 15:53:20 +08:00
@ChristopherWu 方便部署吧
leoleoasd
2019-08-20 15:56:26 +08:00
@ChristopherWu #3 这样子的话就只需要部署一个二进制程序到服务器,不需要整个文件夹都过去了
xfriday
2019-08-20 15:58:45 +08:00
打成 docker 镜像吧
imherer
2019-08-20 16:08:23 +08:00
@ChristopherWu 对的。方便部署是一方面。 假如前后端分离的项目,前端要用 nginx 代理一个,后端也要用 Nginx 代理一下, 有点费事。


@xfriday 就这一个,而且还是交给客户部署。打成 docker,还得教他们用 docker....
ChristopherWu
2019-08-20 16:13:17 +08:00
@imherer
@AngryPanda

那这样子你也可以把图片也跟 binary 一起给过去呀。文件夹跟文件,没什么区别啊。
lanjz
2019-08-20 16:20:30 +08:00
如果操作没错的话应该不会有你说的删除就 404 的。

你是不是删除文件后又重新编译了一次然后再运行的?或者是直接 go run 执行?
imherer
2019-08-20 16:30:10 +08:00
@lanjz 没有的,我的步骤是 先 packr 然后 go build 出 binary 文件
然后运行这个 binary 文件,正常。 这时候删掉前端文件就 404 了
lanjz
2019-08-20 16:36:33 +08:00
@imherer #10 直接 packr build 不用再 go build 了

等于说你直接把 packr 命令用来替换掉原来的 go 命令,参数不变
imherer
2019-08-20 16:48:23 +08:00
@lanjz 我试了下,直接 packr build 之后还是同样的问题。binary 文件大了许多,但是删掉前端文件夹后还是 404 了

我后端框架用的是 gin
代码是这样的:
box := packr.NewBox("./templates")
r.Any("/", gin.WrapH( http.FileServer(box)))
// api router
routers.Setup(r)
mritd
2019-08-20 18:51:42 +08:00
肯定是你的相对路径配置问题,或者没有执行编译转换
imherer
2019-08-20 19:14:43 +08:00
@mritd 问题解决了

之前没仔细看用的是 v1 的版本,换成 v2 后就可以了。 不过 v2 有个 bug 是:too many redirects。 该了修改了源代码里一个地方,目前正常了
ecareyu
2020-06-10 23:12:39 +08:00
有一个外包项目,甲方有加密软件包的需求,所以需要打成一个 exe 文件,然后通过序列号打开应用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/593528

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX