しがない学生の雑記

吐けども吐けども毒を吐く。

JSで「ReferenceError: $ is not defined」が出た時の対処法

Unityのゲーム公開用に自分でホームページ作ろうと思っていじいじしていたんですが、そんな時にブラウザからJavascriptのエラーが。

 

f:id:zyusou:20140701234603p:plain

私全然Javascript知らなかったので何がなんやらよく分からなかったんですが、一応動くようになったので対処法を書いておきます。

 

1,パスを確認する

無名関数である$が定義されてないということは、要するに「jQueryが読めていない」ことに原因があります。従ってまずはパスや権限を確認するのが定石。

 

2,jsファイルの順序を書く順序を確認する

調べた限りおなじようなこと言ってる人がかなりいました。要するに、jQueryの要素を使うjsファイルが先に来てしまっているのでエラー吐かれているということです。

従って、jqueryを最初に読ませるように、つまり一番上にjqueryを読むよう書けばOK。

 

 

大体の対処方法はこれらみたいなんですが、私は1の派生版みたいなエラーだったようです。

 

ダウンロードしたテンプレートにかかれていたJavascriptを読む部分はこんな感じ。

 

 

<!-- Javascript -->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script type="text/javascript" src="js/func.js"></script>

 

 

ぱっと見問題ないですし、なによりデモページを確認しても同じような書き方で動いていたのですが、海外サイトに似たような事例が。

 

 javascript - Uncaught ReferenceError: $ is not defined? - Stack Overflow

 

英語力が残念なのでよくわからないのですが、要するに引っ張ってくるURLにhttp:を加えなかったのが問題のようです。

 

従って、

 

<!-- Javascript -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script type="text/javascript" src="js/func.js"></script>

 

 

このように書いたら解決しました。なんだかモヤモヤするんですが、Javascriptに関しては全くの無知なのでとりあえずメモ程度に残しておきます。

 

UnityとRubyをいじる時間をください(切実)