Help us understand the problem. What is going on with this article?

Munchkin is not defined の原因

More than 1 year has passed since last update.

エラー検知ツールの Sentry でエラーログを見てるとき、↓のエラーが20万件弱発生していた。

Munchkin is not defined

Munchkinというのは、マーケティングオートメーションツールのMarketoのトラッキングをしたいときに使うScriptで、
公式ドキュメントに書いてあったようにCDNから munchkin.js を読み込んで、ページの読み込み時に初期化して使っている。

<script type="text/javascript" src="//munchkin.marketo.net/munchkin.js"></script>
<script>Munchkin.init('munchkinAccountId');</script>

CDNで読み込んだ関数を呼び出してるだけなので特にエラーが頻発するようには見えず、、、
実際、チームメンバーの誰の環境でもエラーは再現できませんでした。

is not defined と言われてるので、関数が定義されてない状態で init() が実行されてるんだろうけど、
同期的に読み込まれてるので、CDNが読まれる前に関数を実行してるわけでもないし。。

Developer toolで回線速度を落としても特に関係なく。。

原因

悪戦苦闘した後にたどり着いた原因が、ブラウザのAdBlock系のプラグインでした😭
AdBlockerを入れてるとMunchkinのCDNにアクセスできず、 Munchkin が参照できずにエラーが起きていました。

解決策

window objectに Munchkin が存在するか判定してから、 init() を実行するようにしました。

  (function() {
    function initMunchkin() {
      if (!('Munchkin' in window)) {
        return;
      }
      Munchkin.init('munchkinAccountId');
    }

    initMunchkin();
  })();
y4m4to
渋谷の転職サービスの会社で働くフロントエンド・エンジニア
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away