durandal でのエラー処理に苦労しています。
ビューなどをレンダリングするためのロジックの大部分を activate 関数に配置することが望ましいことがわかりました。
いくつかのプログラミングエラーが原因でアプリ全体が非常に静かに落ちることに気付くまで、これはうまく機能していました. つまり、コンソールに何も書き込まれず、トラップされたエラーもなく、アプリはアクティブ化機能でハングアップします。
これは予想される動作ですか。アプリのアプリケーション ロジックを別の場所に移動する必要がありますか?
実際のコードは少しぎこちなく、多くの部分が jquery の promise などでラップされています。
私が見たものを証明するために、私は次のように書きました。
public activate(stationId: string): void {
throw "Error in detail activate";
}
コンソールには何も書き込まれず、アプリケーションがハングする以外に明らかなエラーは発生しませんでした。
すぐに起こること:
public activate(stationId: string): void {
setTimeout(function() {
throw "Error in detail activate";
}, 0);
}
この状況では、アクティブ化機能は進行しましたが、残念ながら、このエラーを追跡することもできませんでしたか?
アクティベート ポイントでアプリケーション ロジックを実行する方法を見つける必要があるのではないかと心配していますが、これらのエラーが単純に飲み込まれないようにすると便利です。
デュランダルについてもう少し調べて掘り下げました。
エラーはまだ消えます。エラーをログに記録しようとする Durandal による明白な試みにもかかわらず。私はactivator.jsのアクティブ化機能を探しています:
try {
result = invoke(newItem, 'activate', activationData);
} catch (error) {
system.error(error);
callback(false);
return;
}
基本的に、catch 条件が実行され、システム エラーが呼び出されます。結果はノックアウトバインディングなどに消えているようです。とにかく、このエラーをより見やすくする方法はありますか? 今のところ、activator.js の activate 関数にブレークポイントを設定することに行き詰まっています。
durandal の v2.0.1 を使用しています。