* 生成AIにまとめてもらったものに加筆してます
OneSDK v9 Alpha バグ報告(Vite 環境での subscriber 破損)
現象
Vite(HMR 有効)環境で OneSDK v9 Alpha を使用すると、
コメントイベント受信時に以下のエラーが発生する。
コード
TypeError: s.callback is not a function
at _publish
状況
-
公式テンプレート basicの script.js を参考に
OneSDK.setup→OneSDK.subscribe→OneSDK.connectの順で 1 回だけ実行 -
subscribeはaction: 'comments'のみ -
connectも 1 回のみ -
他のイベント subscribe は一切なし
-
OneSDK.setup は問題ないが、取得時に
_publish()内で例外が発生する
原因(推定)
OneSDK 内部の subscriber 管理において、
callback が undefined の 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 環境特有の問題と考えられる
