IP ベースの地理位置情報を使用することは可能ですが、あまり正確ではありません。そのため、ブラウザー内で HTML5 geolocation API を介してユーザーの位置を取得し、必要に応じてサーバー側にフォールバックするなど、ハイブリッド アプローチを検討することをお勧めします。
node.js で利用できる最もよく使用される 2 つの geoip/-location モジュールを調べましたが、どちらも MaxMind が提供するデータセットを使用しています。私の知る限り、これらのデータベースを手動で最新の状態に保つ必要がありますが、これは明らかにダウナーです。そのため、月に 1 回データベースを更新する小さな同期サービス/スクリプトを作成することを検討してください。(MaxMinds の無料ソリューションの詳細については、こちらを参照してください)。
kuno/GeoIP
は GeoIP バインディングであるため、中心部では libGeoIP C ライブラリを使用しています。これは問題ありませんが、純粋な JavaScript 実装bluesmoon/node-geoip
が提供するほど移植性が高くない可能性があります。どちらも問題ありません。どちらのライブラリが好きかはあなた次第です。パフォーマンスに関しては、いくつかのベンチマークを実行する必要があります (このトピックが重要な場合) … どのタイプのモジュール (C バインディング/ネイティブ) が高速になるかという質問に対する一般的な答えはありません。
数ドルを費やす意思がある場合は、MaxMinds Web Serviceを調べることもできます。これは単純な REST API であり、最も正確な方法です。ドキュメンテーションは非常に優れているため、それを使い始めることは問題ありません。