OneSDK v9 Alpha version で特定の環境だと subscriber が壊れる件

* 生成AIにまとめてもらったものに加筆してます

OneSDK v9 Alpha バグ報告(Vite 環境での subscriber 破損)

現象
Vite(HMR 有効)環境で OneSDK v9 Alpha を使用すると、
コメントイベント受信時に以下のエラーが発生する。

コード

TypeError: s.callback is not a function
    at _publish

状況

  • 公式テンプレート basicの script.js を参考に OneSDK.setupOneSDK.subscribeOneSDK.connect の順で 1 回だけ実行

  • subscribeaction: 'comments' のみ

  • connect も 1 回のみ

  • 他のイベント subscribe は一切なし

  • OneSDK.setup は問題ないが、取得時に _publish() 内で例外が発生する

原因(推定)
OneSDK 内部の subscriber 管理において、
callbackundefined の subscriber が内部 Map に混入している。

そのため _publish() 内で s.callback() が実行され、
callback is not a function が発生する。

再現条件

  • Vite の HMR が有効

  • モジュールが部分的に再評価されるタイミングで OneSDK の内部状態が不整合になる

  • basicの script.js では再現しない

暫定回避策(動作確認済み)

// @ts-ignore
OneSDK._subscribers = new Map()

OneSDK.subscribe({
  action: 'comments',
  callback,
})

内部 subscriber を初期化することで正常動作する。

補足

  • subscribe / connect の多重実行はなし

  • import の多重もなし

  • コメントイベント以外の subscribe もなし

  • 公式テンプレートでは再現しないため、HMR 環境特有の問題と考えられる

生成AIによる回答は情報として意味をなさない内容のため、最小構成のプロジェクトを作成し誰でも再現できる状況を提供お願いいたします :folded_hands:

1 Like

すみません、了解です。

再現性を試みたのですが、
PCの再起動後、再現されず正常に稼働しました。

おそらく導入直後だったので、その影響かもしれません。
現時点では安定して動作しているため、不具合報告は一旦取り下げます。
引き続き様子を見て、再現条件が分かりましたら改めて共有いたします。