Skip to content

[Bug]: v3.1.3にて、normalize関数のオプションjapaneseAddressesApiが機能しない #265

@ms-s-matsumoto

Description

@ms-s-matsumoto

What happened?

お世話になっております。
バージョン3.1.3において、normalize関数にoptions.japaneseAddressesApiでローカルの file:// パスを指定しても、設定が無視され、デフォルトのCDNが参照されてしまう問題について報告します。

環境

  • ライブラリバージョン: [email protected]
  • 実行環境: Node.js(v22.16.0)
  • OS: Windows11

問題の詳細

ローカルの住所データを参照する目的で、以下のようなコードを実行しました。
この際、参照先のディレクトリ (C:\myAppPath\data\japanese-addresses) は、ローカルファイルが参照されているかを確かめるために空にしています。

import { normalize } from '@geolonia/normalize-japanese-addresses';

const address = '東京都新宿区西新宿2-8-1';
const localAddressesUrl = 'file://C:\\myAppPath\\data\\japanese-addresses\\ja';

// options にてローカルファイルのパスを指定
const normalizedResult = await normalize(address, {
    japaneseAddressesApi: localAddressesUrl,
});

console.log(normalizedResult);

期待される挙動

指定されたローカルパスからデータを読み込もうと試み、ファイルが存在しないためエラーが発生する。

実際の挙動

オプションが無視され、デフォルトのCDNへフォールバックします。結果として、正規化された住所オブジェクトが正常に返却されてしまいます。

調査

デバッガーで内部の動作を確認したところ、以下の点が判明しました。

  1. node_modules\@geolonia\normalize-japanese-addresses\dist\main-node-esm.mjs 内の fetchOrReadFile 関数において、config$1.japaneseAddressesApi の値が、optionsで渡したパスではなく、デフォルトのCDN URL (https://japanese-addresses-v2.geoloniamaps.com/api/ja) になっていました。
// myAppPath\node_modules\@geolonia\normalize-japanese-addresses\dist\main-node-esm.mjs
const fetchOrReadFile = (input, options) => __awaiter(void 0, void 0, void 0, function* () {
    // ↓ ここの config$1.japaneseAddressesApi がデフォルト値のままになっている
    const fileURL = new URL(`${config$1.japaneseAddressesApi}${input}`);
  1. 回避策の検証

同ファイル内の設定オブジェクトを直接書き換えることで、期待通りの動作になることを確認しました。

// 変更前
const currentConfig = {
  japaneseAddressesApi: defaultEndpoint,
  // ...
};

// 変更後(ローカルパスをハードコード)
const currentConfig = {
  japaneseAddressesApi: 'file://C:\\myAppPath\\data\\japanese-addresses\\ja',
  // ...
};

この変更後、

  • ローカルディレクトリが空の場合 → 想定通りエラーが発生した
  • ローカルディレクトリに住所データを配置した場合 → 想定通りローカルファイルを使って正規化に成功した

以上のことから、normalize関数に渡されたoptionsが、内部のデータ取得処理で参照される設定オブジェクトに正しく反映されていない不具合があるものと考えられます。

ご確認いただけますと幸いです。

Steps to reproduce

No response

Relevant log output

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions