17

タイムアウト エラー (つまり、依存関係の読み込みに失敗した) の原因となったスクリプトへのフル パスを見つけるエレガントな方法を探しています。

requirejs.onError = function (err) {

   // this works:
   var script_that_failed_loading = err.originalError.target.src

   // now I want:
   var the_script_responsible_for_this = <???>

};
4

2 に答える 2

8

ローダー レベルのエラーバックを使用する

require(["foo","bar"],function(foo,bar){
  // perform some action
},function(error){
  // handle error here
});

失敗したモジュール名が に示されていることに注意してくださいerror.requireModules。このようなエラーバックは、ローダーとモジュールの両方に使用できます。リソースに複数のフォールバック パスがある場合は、パス フォールバックを使用します。

私の個人的な経験によると、私は謙虚にddotsenkoに同意しません。本番環境では RequireJS を使用しています。適切にセットアップすれば、RJS は非常に信頼性が高くなります。

于 2013-05-18T12:14:19.173 に答える
2

RequireJS は、エラーをキャッチするために、やや信頼性が低く、切断されたメカニズムを選択しました。タイマーを使用して、期待どおりの結果が得られたかどうかを確認します。他の一部の AMD ローダーは、他のより直接的なメカニズムを使用して、読み込み中のエラー状態を検出します。

私の好みの AMD ローダーはCurlJS です。これは、読み込み/解析エラーをキャッチするように組み込まれています。

requireアーキテクチャの選択により、エラー状態をより確実に検出し、エラー ハンドラを各呼び出しに直接アタッチできます。エラー キャッチのようなものが重要な場合は、CurlJS を検討することを強くお勧めします。

于 2013-02-05T18:52:51.533 に答える