由于github源代码开发者用的linux或者mac来作为开发环境,所以存在windows环境下的不友好,有的甚至就是坑。甚至好多Metabase windows开发者也是用linux虚拟机来跑环境的。
当然如果通过虚拟机跑linux,或者用windows自带的Ubuntu进行开发,有些问题就不存在了,还有一种好的方式用git的bash环境去搭建,可参见:Metabase-BI系列03:win系统用git-bash启动Metabase
。
坑一:git-clone源码编码LF问题
git里面有 AutoCRLF 、 SafeCRLF
1 | git config --global core.autocrlf true //提交转换为LF,检出转换为CRLF |
如果: AutoCRLF 设置为ture,代码转换成CRLF,代码后台能跑起来,前台web端访问空白,js错误,各种property undefined
所以这种情况一定要将AutoCRLF 设置为false,而且是先设置false,再执行git clone
可以肯定的一点是,本身LF转CRLF就存在bug,所以就很容易出问题
坑二:yarn install时grep命令问题
在install的时候,要去掉grep那条命令,此命令为linux命令,可见完全没有考虑windows环境的感受,当然你也可以尝试安装grep在windows下执行的程序
1 | "preinstall": "echo $npm_execpath | grep -q yarn || echo '\\033[0;33mSorry, npm is not supported. Please use Yarn (https://yarnpkg.com/).\\033[0m'", |
坑三:NODE_ENV不是内部或外部命令
在install的时候,NODE_ENV不是内部或者外部命令,其实这个还是linux和windows的问题
1 | linux: NODE_ENV=hot |
所以说windows下,直接加个set就可以了,或者去掉里面的,先set变量,再install。
注意:这个是热部署的变量,如果需要热部署,这个命令不能少。
坑四:lein ring server文件名扩展名报错
1 | Compilation failed: Cannot run program "java" (in directory "D:\metabase"): CreateProcess error=206, 文件名或扩展名太长。 |
这个问题是windows系统导致的,如果是win10或许可以解除这个长度限制,如果是win7或者更早的windows版本估计不好解决,就不能用热部署了,但是lein run是可以的
坑五:自动创建仪表板(数据透视)的问题
登录首页后,一直发请求,html 500错误
1 | Request URL: http://localhost:3000/api/automagic-dashboards/database/2/candidates |
后台报错,找不到目录文件
很明显是windows路径错误,可以特殊处理一下,找到src/metabase/util/files.clj
1 | (defn do-with-open-path-to-resource |
坑六:数据源、中文汉化包不自动生成问题
正常情况下会在,安装目录/plugins下生成数据库驱动包,如果没有新增数据库只能选择默认的几种数据库类型
正常情况下,安装目录/resources/frontend_client/app/locales下,生成多语言版本json
windows下有些shell脚本命令是不能正常运行的,所以导致不能正常生成,可以直接下载放到相应目录底下,数据库驱动包也可以到module各个驱动目录下面直接lein uberjar生成,这种生成容易发生依赖包不一致报错的问题。
问题七:Metabase多版本jar包冲突
Metabase里面有很多分支,有些是版本分支,如果用到新老板,就不要把不同版交叉使用,Metabase在运行时正常会检测并清理,一旦出现检查存在又不进行清除更新就会出现jar包冲突。