meteor-geocoder reverse callback TypeError: number is not a function

meteor-geocoder reverse callback TypeError: number is not a function

我在使用 aldeed:geocoder@0.3.7:

进行反向查找时遇到错误
var geo = new GeoCoder();
var addr = geo.reverse(45.767, 4.833);

给出以下错误:

W20151006-08:26:25.947(2)? (STDERR) C:\Users\steets\AppData\Local\.meteor\packages\aldeed_geocode
r[=11=].3.7\npm\node_modules\node-geocoder\lib\geocoder.js:60                                        
W20151006-08:26:25.947(2)? (STDERR)                 return callback(err, data);                  
W20151006-08:26:25.947(2)? (STDERR)                        ^                                     
W20151006-08:26:25.947(2)? (STDERR) TypeError: number is not a function

这发生在我的开发机器和部署中。

使用 node-inspector 我已经将问题追踪到 Meteor.wrapAsync 在 aldeed_geocoder.js:61:

GeoCoder.prototype.reverse = function geoCoderReverse(lat, lng, callback) {
  if (callback) {
    callback = Meteor.bindEnvironment(callback, function (error) {
      if (error) throw error;
    });
    rv(lat, lng, this.options, callback);
  } else {
    return Meteor.wrapAsync(rv)(lat, lng, this.options);
  }
};

(rv调用了node-geocoderreverse函数,报错中提到)

然后 wrapAsync 在最后一行失败:

return fut ? fut.wait() : result;

运行 meteor update表示我有最新的meteor和packages.

我尝试在 vanilla 应用程序中重现此错误,遵循包自述文件 (https://github.com/aldeed/meteor-geocoder):

meteor create test
cd test
meteor add aldeed:geocoder
meteor

然后在新终端中:

meteor shell
> var geo = new GeoCoder()
> geo.geocode('29 champs elysée paris')
[ { formattedAddress: '29 Av. des Champs-Élysées, 75008 Paris, France',
....
    zipcode: '75008' } ]
> geo.reverse(45.767, 4.833)

stream.js:94
      throw er; // Unhandled stream error in pipe.
            ^
Error: read ECONNRESET
    at errnoException (net.js:905:11)
    at TCP.onread (net.js:559:19)

这是一个不同的错误,但它仍然不起作用,这可能是根本原因。

我最近升级到 meteor 1.2。此代码过去在 meteor 1.1 下运行良好。

如有任何帮助,我们将不胜感激。我完全不知所措。

目前简单的解决方法是将包克隆到项目目录中的 'packages' 文件夹并更改错误行 geocoder.js:34。它应该是这样的:

g.reverse({lat: lat, lon: lng}, callback);

我希望 aldeed 能尽快解决 github 中的问题。我现在就尝试做一个 PR。

结果是一个错误。由包维护者修复:)