版权声明:转载请注明出处 https://blog.csdn.net/geol200709/article/details/82423153
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