web-dev-qa-db-ja.com

Uncaught TypeError:未定義のプロパティ 'length'を読み取れません

多くの要素のlengthプロパティにアクセスするプラグインがあります。ただし、javascriptコンソールはjquery.min.jsの12行目を指しています。

プラグインで問題のある行を見つけるためにバックトレースするにはどうすればよいですか?

8
maček

プラグインで問題のある行を見つけるためにバックトレースするにはどうすればよいですか?

firebugは、これらのエラーをデバッグするための優れた方法です。

alt text
(ソース: getfirebug.com

4
Sarfraz

縮小されたスクリプトを使用する場合、デバッガー(完全に最高のホシカメムシのような)は同じ問題のある行を表示し、この情報は役に立ちません(縮小されたスクリプトは読みにくく、1行で書かれています)。

このような問題を解決するいくつかの方法:

  1. 私の前に言ったように、縮小されていないスクリプトを使用して開発する場合、デバッガーは何かを意味する行を表示します。運が良ければ、開発者の非常に役立つコメントを見つけることができます。
  2. スクリプトの完全版が見つからない場合は、次のようなunminifierを使用してください: http://jsbeautifier.org/ (縮小されたスクリプトを貼り付けて下のボタンをクリックしてください)。プロジェクトにuminifiedスクリプトを追加し、無効な関数を再度実行します。デバッガーが再び行を表示しますが、今回は実際の論理行が表示され、ほとんどの場合、何が問題であるかを理解できます。
  3. デバッガーは、どのスクリプトが問題をスローするかを示します。このスクリプトの新しいバージョンがあるかどうかを確認してください。私は一度同じ問題を抱えていました。縮小されたスクリプトの行、プラグインの名前(著作権で上記の数行)を見つけ、新しいバージョンが利用可能であることがわかりました。変更ログを確認し、次のようになりました: "潜在的な不明な属性値のコード全体に複数の「サニティチェック」を追加しました"-ヘッドショット:)スクリプトを更新し、すべてが正常でしたこれからは特別なデバッグなしで何時間もかかります。
  4. スクリプト名でエラーをグーグル-それは私を何度も助けました..おそらくあなたはそれをしました、しかし多分あなたはスピーチマーク ""で試していませんでした-グーグルはテキストで正確なフレーズでページを返します。
6
s3m3n

これらのあいまいなフレームワークエラーは、AJAXリクエストエラーの結果であることがよくあります。その場合、選択した開発者ツールに[ネットワーク]タブが含まれている可能性が高く、実際のエラーの原因。

JQuery(または任意のJavaScriptフレームワーク)を使用してAJAXリクエストの結果を処理している場合、フォーマットとエラーの処理の両方が追加であり、見過ごされがちな手順です。

1

Chrome)を使用する場合は、"View > Developer > Developer Tools"に移動して、組み込みの開発ツール(Firebugよりも好む)を使用できます。コンソールのエラーには、右向きの小さなポイントが含まれていることがよくあります。その前の矢印をクリックすると、エラーの詳細が表示されます。

Javascriptエラーはライブラリで発生する可能性は低いですが、代わりにそのライブラリ内のメソッド/関数を参照するコードであるため、コンソールの右側にリストされているすべての問題行を調べて、対応する行を選択する必要がありますあなたが書いたコードはあなたの問題がどこにあるかになるでしょう。

JQueryのソースコードを調べても、問題がどこにあるのかわからない可能性があります。問題はコードにあります。 jQueryは、渡された未定義の変数を使用できないというだけです。

1
Kevin Beal

デバッガー/ Firebugに加えて、これを追跡する簡単な方法(サイトのサンドボックスバージョンがある場合)は、各プラグインを個別にコメントアウトして、エラーがなくなるかどうかを確認することです。

0
tainterr