これは間違いなく、私が過去数日間にたくさん遭遇したバグです。1つのモジュールをロードすると、アプリの別の部分にある2つ目の完全に無関係なモジュールが、以前は完全に機能していた場所で未定義になる可能性があります。私はRequireJSをよく使用しました-これはスクリプトの読み込みや循環依存の問題ではありません。最初は、かなりの回数(1800+)繰り返される第2層ビューのテキストファイルが必要なときに、エラーが最も頻繁に発生しました。
domReady -calls-> new View1() -iterates-> new SubView() -depends-> text!template
-calls-> new View2() --> undefined!
これにより、他の場所で完全に無関係なモジュールが未定義になります。SubView機能をViewモジュールに統合することで、しばらくの間この問題を回避しました。
domReady -calls-> new CombinedView1() -depends-> text!template
-calls-> new View2() --> ... all good ...
プロジェクトが成長するにつれて、私は再び壁にぶつかり、それを修正する方法を本当に見つける必要があります。より多くのモジュールを含めると、以前に定義されたモジュールがランダムに未定義になります。Requireはエラーをスローせず、ブラウザもスローしません。私はCoffeeScriptなども使用していません。
同じモジュールと依存構造を持ち、依存するビュー、モデル、コレクションをスタブアウトしたバージョンのアプリケーションを作成するのに少し時間がかかりました。これは完全に正常に機能するので、何らかのメモリの問題があるとしか考えられませんか?ただし、Chromeがエラーをスローすることもありません。
次のステップは、メモリを消費するループでスケルトンアプリケーションを埋めて、何が起こるかを確認することだと思います。それがどのように行われるかをお知らせします。
Require v2.0.1を使用しているため、注文プラグインはありません。依存関係とパッケージはすべて、shimconfigディレクティブを使用して構成されます。ロードされた非AMDモジュール:
- 背骨
- アンダースコア
- jQuery
- 口ひげ
- リーフレット
- ブートストラップ
PSこれが適切な場所にない場合はお詫び申し上げます。コメントとしてはいいと思いましたが、正直コメントボタンがどこにも見えません。
更新:
この依存関係構造は一貫して壊れています:
Main
- View 1
- text!...
- View 2
- text!...
テキストを空の文字列に置き換えると、毎回正常に機能します。
Main
- View 1
- View 2
では、テキストがロードされるのを待つと、メインモジュールで依存関係として明示的に設定されているときにビュー1が未定義になるのはなぜですか?確かに、Mainは、依存しているすべてのものがロードされるまで呼び出されるべきではありませんか?