3

これは私が試しているコードです:http://jsfiddle.net/sbrsK/10/jsfiddle
でエラーなしで正しく実行されます

私のコンピューターでローカルにWebサーバーを介して同じものを実行しようとしても機能しません。次のファイルがロードされています。

  • index.html
  • app.js

Firefoxでは、次のエラーが発生します。

TypeError: this._input is null @ http://cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.0.beta.6.js:364

Chromeでは次のエラーが発生します:

Uncaught TypeError:Cannot call method 'match' of null
under match = this._input.match(this.rules[rules[i]]); in handlebars-1.0.0.beta.6.js

このリンクで以前に提起された非常に類似した問題がありますが、それはまだ開いているようです。

だから問題は、jsfiddleで正しく動作するときにこのエラーが発生するのはなぜですか?これをローカルで実行する正しい方法は何ですか?

4

1 に答える 1

7

このエラーは、#entry-template使用しようとしたときにDOMにないことを意味します。

var source = $("#entry-template").html(); // There is no #entry-template in the DOM here
var template = Handlebars.compile(source);

つまりundefined、Handlebarsテンプレートとしてコンパイルしようとすることになり、それは機能しません。これを実行すると、エラーを確認できます。

http://jsfiddle.net/ambiguous/LprDR/

コンソールを開いた状態で。

domがロードされた後にすべてのコードが実行されているため、jsfiddleは機能します。これは、デフォルトのjsfiddleの動作です。

実際のコードでロード順序の問題が発生している可能性があり$(function() { /*...*/ })ます。ラッパーでラップしてみてください。

于 2012-09-27T04:50:06.170 に答える