mojodna / tilelive-tmstyle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot read property 'length' of undefined in layer code

pnorman opened this issue · comments

I'm getting this error with Kartotherian

    TypeError: Cannot read property 'length' of undefined                                                                                            
        at /srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/tilelive-tmstyle/index.js:180:56        
        at Array.map (native)
        at /srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/tilelive-tmstyle/index.js:179:34
        at CassandraStore.handler.getInfo (/srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/@kartotherian/core/lib/sources.js:260:7)
        at /srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/tilelive-tmstyle/index.js:118:20        
        at tryCatcher (/srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/bluebird/js/release/util.js:16:23)
        at Promise.successAdapter (/srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/bluebird/js/release/nodeify.js:23:30)
        at Promise._settlePromise (/srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/bluebird/js/release/promise.js:566:21)
        at Promise._settlePromiseCtx (/srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/bluebird/js/release/promise.js:606:10)
        at Async._drainQueue (/srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/bluebird/js/release/async.js:138:12)
        at Async._drainQueues (/srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/bluebird/js/release/async.js:143:10)
        at Immediate.Async.drainQueues (/srv/deployment/tilerator/deploy-cache/revs/f2907d4db8052caced27158ea4d21d72239b8c77/node_modules/bluebird/js/release/async.js:17:14)
        at runCallback (timers.js:672:20)
        at tryOnImmediate (timers.js:645:5)
        at processImmediate [as _immediateCallback] (timers.js:617:5)

The code in question is

tilelive-tmstyle/index.js

Lines 178 to 186 in 0936bd4

//Layer ordering defined in style
opts.Layer = data.layers.map(function(layerId) {
for(var i = 0; i < backend.data.vector_layers.length; i++) {
var layer = backend.data.vector_layers[i];
if(layer.id == layerId) {
return layerToDef(layer);
}
}
});

Layers are explicitly defined in the project yaml but the source is a tmsource URL that doesn't resolve. I tried changing it to a tilejson URL, the same as a tmstyle that works but it had no change.