diff --git a/src/serve_data.js b/src/serve_data.js index dbab4a6..e7f502a 100644 --- a/src/serve_data.js +++ b/src/serve_data.js @@ -19,6 +19,10 @@ module.exports = function(options, repo, params, id) { repo[id] = tileJSON; + var mbtilesFileStats = fs.statSync(mbtilesFile); + if (!mbtilesFileStats.isFile() || mbtilesFileStats.size == 0) { + throw Error('Not valid MBTiles file: ' + mbtilesFile); + } var source = new mbtiles(mbtilesFile, function(err) { source.getInfo(function(err, info) { tileJSON['name'] = id; @@ -28,7 +32,7 @@ module.exports = function(options, repo, params, id) { tileJSON['tilejson'] = '2.0.0'; tileJSON['basename'] = id; - tileJSON['filesize'] = fs.statSync(mbtilesFile)['size']; + tileJSON['filesize'] = mbtilesFileStats['size']; delete tileJSON['scheme']; Object.assign(tileJSON, params.tilejson || {}); diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 7492659..ef70b97 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -173,8 +173,12 @@ module.exports = function(options, repo, params, id) { queue.push(function(callback) { var mbtilesFile = url.substring('mbtiles://'.length); - map.sources[name] = new mbtiles( - path.join(options.paths.mbtiles, mbtilesFile), function(err) { + mbtilesFile = path.join(options.paths.mbtiles, mbtilesFile); + var mbtilesFileStats = fs.statSync(mbtilesFile); + if (!mbtilesFileStats.isFile() || mbtilesFileStats.size == 0) { + throw Error('Not valid MBTiles file: ' + mbtilesFile); + } + map.sources[name] = new mbtiles(mbtilesFile, function(err) { map.sources[name].getInfo(function(err, info) { var type = source.type; Object.assign(source, info);