Go内嵌静态资源go-bindata的安装及使用-一直找不到-gobindata生成数据不正确

我们在开发应用的时候,有时会遇到需要使用静态资源文件的情况。对于Go语言来讲,编码,编译,生成一个单一的可执行文件,感觉特别干净清爽。但是有了静态资源文件,还得一同发布相应的文件,也给程序的部署增添了麻烦。既然发布单独一个可执行文件是非常简单的操作,就有人会想办法把静态资源文件打包进 Go 的程序文件中。以太坊的编码者就用这种方式嵌入了2套javascript程序bignumber.js以及web3.js。

下面就来看嵌入过程是怎么来完成的。
首先确定嵌入工具,目前有go.rice,esc,go generate, go-bindata等。据网友说go-bindata有丰富的 API,还可以压缩存储,是比较好的选择,而且以太坊也是用go-bindata来嵌入js文件的。本文就以go-bindata为例来说明静态资源嵌入的办法。

安装Go-bindata

Go-bindata的官网在这里,官网提供了最新版本的下载,还提供了一些相当简略的说明。
下面是安装命令:

go get -u github.com/jteeuwen/go-bindata/...

问题描述:goland可以执行,但是cmder就会不行

Go内嵌静态资源go-bindata的安装及使用-一直找不到-解决方案

Go内嵌静态资源go-bindata的安装及使用-一直找不到-解决方案

cmder 提示 go-bindata 不是内部或者外部命令,也不是可运行的程序

解决 goland中有 但是 cmd 就无法执行

需要加环境变量。
安装完了之后可能会找不到go-bindata,提示错误:“-bash: /usr/bin/go-bindata: No such file or directory”。原因在于由于没有定义GOBIN目录,它会自动安装到GOPATH\bin目录下。去那里找找。
找到之后,在PATH里面追加go-bindata的路径。

windwos 直接把,GOPATH\bin 加入环境变量

比如我得 GOPATH 为 D/word/src
则我配置环境变量为:

Go内嵌静态资源go-bindata的安装及使用-一直找不到-解决方案

linux

#通过命令行加入GOBINPATH
export PATH=$PATH:$GOPATH/bin
#编辑启动配置文件,开机后自动加载这个路径
nano ~/.bashrc
#编辑完成后,重新加载环境变量到内存
source ~/.bashrc

排查问题二:1.16 1.17 gobindata 是不一样的

如果发现自己打包的文件,与同事的不一样。
则需要执行最新的下载包。

go install -a -v github.com/go-bindata/go-bindata/...@latest
本作品采用《CC 协议》,转载必须注明作者和本文链接
嗨,我是波波。曾经创业,有收获也有损失。我积累了丰富教学与编程经验,期待和你互动和进步! 公众号:上海PHP自学中心 付费知识星球:破解面试:程序员的求职导师
讨论数量: 4
arunfung

换Mac吧,没这个问题

2年前 评论
wangchunbo (楼主) 2年前

可以尝试一下go语言的语法糖 " //go:embed "

//go:embed frontend/src
var assets embed.FS
2年前 评论
wangchunbo (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 欣昊玉
文章
273
粉丝
339
喜欢
558
收藏
1106
排名:64
访问:12.2 万
私信
所有博文
社区赞助商