tileserver-gl 安装编译时遇到的错误

tileserver-gl 当前不支持Windows,所以在 Ubuntu16.04 上跑。

对node版本也敏感,这里使用 node v6.9.4

1. sqlites3 问题:Cannot find module ‘…/node_sqlites3.node’

可能是因为刚开始用 node v8.11.3 编译,后来切换 node v6.9.4,就找不到那个编译文件(不同node版本生成不同的文件),那么进入 sqlites,重新 ‘npm install’

$ cd node_modules/sqlite3/
$ npm install

如果还不成功,可以尝试

$ npm install --build-from-source

2. sharp 问题:编译不过

这个是因为需要下载某个文件,下载失败
把版本调到最新版本,即 0.20.7
简单解决方法,卸载,然后重装,就是最新版本了

$ npm uninstall sharp
$ npm install sharp

3. canvas 问题: Cannot find module ‘…/build/Release/canvas.node’

因为缺少相关的库,安装上即可,具体可以参考官方安装说明

$ sudo apt-get install libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++

4. mapbox-gl-native 问题: Cannot find module ‘…/…/lib/mapbox_gl_native.node’

干掉 node_modules/@mapbox/mapbox-gl-native ,然后重新 npm install @mapbox/mapbox-gl-native

5. libglesv2.so.2 cannot open shared object file no such file or directory

在GitHub 上的issue里面提到,说安装 libgles2-mesa 即可解决,但尝试了还是不成功。其实还需要另外一个 libegl1-mesa

$ sudo apt-get install libegl1-mesa libgles2-mesa

6. 一切就绪后,node启动不成功

node 启动

$ node src/main.js data.mbtiles

启动失败,失败信息:
terminate called after throwing an instance of 'std::runtime_error' what(): eglInitialize() failed.

原因是调用的模块 mapbox-gl-native 运行需要GUI,不能在终端环境使用,解决方法是:

$ sudo apt-get install xvfb
$ xvfb-run -a -s '-screen 0 800x600x24' node src/main.js data.mbtiles

运行成功

后话:把踩过的坑,简单记录下来。另外,在终端跑,只是为了学习源码,方便调试,实际部署推荐docker

更多信息欢迎关注公众号

tileserver-gl 安装编译时遇到的错误_第1张图片

你可能感兴趣的:(后端,mapbox,开源GIS)