ミツカリ技術ブログ

株式会社ミツカリの開発チームのブログです

Can't find variable: gmo の対応

はじめに

こんにちは。ミツカリのたなしゅんです。
ミツカリではサービスのエラー検知にSentryを利用しています。
Sentryから以下のエラーがページごとに通知されることがありました。

Can't find variable: gmo

本記事ではこのエラーについての解説と、Sentryでの対応例を紹介します。

そもそも何のエラー?

エラーについて検索すると以下のIssueにたどり着きました。

github.com

このスレッドのやり取りを読んでいくと、以下のリンクが貼ってありました。

issues.chromium.org

どうやらiOSのGoogleChromeにおける不具合のようです。
実際に弊社のSentryに通知されているユーザエージェントの情報もiOSのChromeブラウザでした。
サービス運営側ではどうすることもできないのでGoogleが一刻も早く修正をリリースしてくれることを待つことしかできません。

Sentryでの設定

Sentryではデフォルトの設定ではエラーのグルーピングはトレース情報によって行われます。
代表的なものだとページのURL(パス)などです。
そのため、同じエラーでも異なる画面で発生すればそれは別のエラーとして扱われます。
エラーのグループ単位でアーカイブの対応が可能ですが、このエラーをサービス上のすべてのパスで通知が来る度にアーカイブするのは開発者体験としても良くありません。

Sentryにはエラーをフィルターする機能もあります。
ブラウザ上での設定はBusinessプランである必要がありますが、TeamプランでもSDK側の設定で同じことを行うことが可能です。

Sentry.init({
    dsn: SENTRY_DSN,
    // 正規表現にマッチするエラーは無視する設定
    ignoreErrors: [
        /^Can't find variable: gmo$/,
    ],
});

上記のようにSentryのinit時にignoreErrorsという設定で正規表現でのマッチパターンを渡すと、エラーメッセージによるフィルタリングが可能です。
ignoreErrorsに関しての公式ドキュメントは以下です。

docs.sentry.io

最後に

上記の内容が同じエラーで困っている方の助けになれば幸いです。

現在、ミツカリではITエンジニアを募集しています。興味のある方はぜひお気軽にご連絡ください!

herp.careers