Клуб API Карт

Геокодирование с помощью модуля node.js, ошибка

isaev-sergey88
22 июля 2015, 16:14

С некоторых пор (ранее все работало), запуск скрипта множественного геокодирования начал выдавать ошибку:

Error: not found
    at module.exports.inherit.toGeoJSON (/usr/local/lib/node_modules/multi-geocoder/lib/providers/yandex/geojson-view.js:16:19)
    at module.exports.inherit.process (/usr/local/lib/node_modules/multi-geocoder/lib/providers/yandex/geocode-provider.js:12:21)
    at null.<anonymous> (/usr/local/lib/node_modules/multi-geocoder/lib/providers/base-geocode-provider.js:29:36)
    at null.<anonymous> (/usr/local/lib/node_modules/multi-geocoder/node_modules/handy-http/lib/handy-http.js:151:21)
    at g (events.js:180:16)
    at emit (events.js:92:17)
    at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/multi-geocoder/node_modules/handy-http/lib/handy-http.js:234:26)
    at IncomingMessage.g (events.js:180:16)
    at IncomingMessage.emit (events.js:117:20)
    at _stream_readable.js:929:16

Скрипт запускаю вот так:

NODE_PATH="/usr/local/lib/node_modules"
export NODE_PATH
nodejs /var/www/..../mScript.js

Смущает то, что ранее скрипт отрабатывал без ошибок. В node.js, как и в линуксе, почти не разибраюсь. Был бы рад любой помощи.

Вот листинг скрипта:

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : '...',
  user     : '...',
  password : '...',
  database : '...'
});

var MultiGeocoder = require('multi-geocoder'), 
geocoder = new MultiGeocoder({ provider: 'yandex', coordorder: 'latlong','key':'...' }),
provider = geocoder.getProvider();
provider.getText = function (point) {
    var text = 'Москва, ' + point.address; 
    return text;
};
   

connection.connect();
connection.query('SELECT address,shop_name,phone FROM ...;', function(error, result, fields){
     if (error) { throw error; }
        var address_obj = [];
        for(var k in result){
            var address = result[k]['address'];
            var shop_name = result[k]['shop_name'];
            var phone = result[k]['phone'];
            address_obj.push({"address": address,"name": shop_name,"phone": phone})
        }

        geocoder.geocode(address_obj)   
        .then(function (res) {
        var fs = require('fs');   
            fs.writeFileSync('/var/www/..../result.txt', JSON.stringify(res));
        });
        return;

});

2 комментария
Подписаться на комментарии к посту

Проблема в ваших данных, среди них есть адрес, который не геокодируется

Можно обновить модуль до последней версии, в новых версиях он возвращает в результате объект с двумя полями result и error

в error лежит список того что не нашлось при геокодировании

К сожалению, обнвовение node.js не дает никакого результата.

Ошибки в данных, вероятнее всего нет, поскольку не обрабатывается даже:

address_obj.push({"address": "Москва"});

geocoder.geocode(address_obj);