Ember.js: 2.10で「エラー」ルートを設定できません

作成日 2016年11月29日  ·  29コメント  ·  ソース: emberjs/ember.js

Ember.jsはデフォルトで「エラー」ルートを設定していますが、route-recognizerは重複ルートを許可しなくなりました。
https://github.com/tildeio/route-recognizer/blame/5d54688f04273d3a921470b903a36266dddcdaf2/dist/route-recognizer.js#L525 -L531

これを行うと、コンソールにエラーのある空白のページが表示されます。

Uncaught Error: You may not add a duplicate route named `error`

デフォルトの「エラー」ルートはここに設定されています。
https://github.com/emberjs/ember.js/blob/10857fd98008bb47bd63bfe3d21b0fc224a197a5/packages/ember-routing/lib/system/dsl.js#L49 -L50

ember g route errorを使用してerrorルートを処理しようとすると、テストできます。
この機能は2.9で正常に機能しました。

Bug Ember 2.10 Has Reproduction

最も参考になるコメント

2.11.1で修正

全てのコメント29件

@ diamondo25ツイドルで再現できますか?

私もこれを見ていますが、昨日からの最新のベータ版で見たのを覚えていません

スジは通ってるようだ。 これは、私が行ったroute-recognizer変更によるものです。 ユーザーがすでに作成している場合は、デフォルトの作成をロックアウトする必要があります。 (私は修正する方法を知っています、それに到達します。)

クロスリンク: https

@nathanhammondとても早く修正してくれてありがとう! @rwjblue 「バグ」とラベルを付けたので、おそらくこの問題は次の2.10.1リリースで解決できるでしょう。

それは修正ではありません、@ pixelhandler! そこでバグが発生しました。 😜これは修正されたらポイントリリースが必要ですが、ルーターの作業に戻る前に、他に対処すべきことがいくつかあります。 (対処すべき未解決の問題が約5つあります。)

この男にステータスはありますか?

Bustleアプリを2.10にアップグレードするとこの問題が発生します。ルートのerrorルートを別の名前にリファクタリングするか、2.10へのアップグレードを延期する必要があります。

このバグの状況にも関心があります。 当面は2.10へのアップグレードを延期しております。

errorルートを明示的に登録せず、エラーテンプレート、ルートなどをそのままにしておくことで、これを回避できることを望んでいました。 私はそれを試し、見つけました:

  • 失敗したルートフックでは、ルーターがエラールートにバブルアップし、カスタムテンプレートが表示されます。
  • 意図的にエラーに移行しても、ルーターはテンプレートに移行しません。 ただし、興味深いことに、ルートが存在しない場合に表示されるのと同じエラーメッセージはログに記録されません。

テンプレート、ルート、コントローラーなどをそのままにして、明示的に処理されたエラーケースに対して同じテンプレートを指すカスタムエラールートを登録できるのではないかと考えています。 たぶん、これは私のカスタムテンプレートでキャッチされたエラーとキャッチされなかったエラーの両方を処理するでしょう。

@ nathanhammond-上記について何か考えはありますか? 公式の修正を待つだけのハッカーの価値はありますか?

気にしないで :(

上記の提案では、引き続きerrorマッピングが必要であり、このバグが発生します。

処理したエラーのカスタムルートを作成し、 errorテンプレートで同じエラーコンポーネントを使用するだけです。

修正が保留されている他の唯一のアプローチのようです。

CC: @nathanhammond

これはemberv2.12.0-beta.1で修正されていることに気づきましたが、この修正を2.11リリースにバックポートする機会はありますか? 2.12ベータ版以降、多数の新しい問題が発生します。

2.12ベータ版以降、多数の新しい問題が発生します。

ベータサイクルで見つけた問題を報告してください!

この修正を2.11リリースにバックポートする機会はありますか?

はい、それは良い考えだと思います。

これはv0.2.9 +で、0.3.xシリーズの27c0f579b21d93でコメントアウトされているようです。

@rwjblueこれも2.11または2.10にパッチが適用されますか? どのバグにどのバージョンでパッチを適用するかを決定するプロセスがわかりません。

2.11.1で修正

これはbeta.1とは異なる方法で修正されましたか? 2.11.1を試してみたところ、ベータ版ではなく、「hotel.error」に関する重複ルートエラーが発生しました。

@ Glennvd-はい、それらはルート認識機能の異なるバージョンです(2.11の場合は0.2.9、2.12の場合は0.3)。 どういうわけかこれをいじった可能性があります。 2.11で取得したエラーとスタックトレースを共有できますか? また、いじりやデモレポの可能性はありますか? 何が悪かったのかがわかったら、2.11.2をリリースできてうれしいです。

@rwjblueここに正しい残り火バージョンに変更する必要がありますhttps://ember-twiddle.com/e4b8412bf5629483f94276a001598571

以下の完全なスタックトレース(私自身のアプリから)。
add (ember.debug.js:55618) (anonymous) (ember.debug.js:57247) (anonymous) (ember.debug.js:55191) eachRoute (ember.debug.js:55179) eachRoute (ember.debug.js:55177) eachRoute (ember.debug.js:55177) map (ember.debug.js:55190) map (ember.debug.js:57244) _initRouterJs (ember.debug.js:27511) setupRouter (ember.debug.js:27606) startRouting (ember.debug.js:27592) startRouting (ember.debug.js:2887) didBecomeReady (ember.debug.js:3867) invoke (ember.debug.js:337) flush (ember.debug.js:405) flush (ember.debug.js:529) end (ember.debug.js:599) run (ember.debug.js:722) join (ember.debug.js:744) run.join (ember.debug.js:22286) (anonymous) (ember.debug.js:22349) mightThrow (jquery.js:3570) process (jquery.js:3638) nrWrapper ((index):97)
エラーは同じですUncaught Error: You may not add a duplicate route named hotel.error .

@rwjblue実行中

grep --recursive "RouteRecognizer.VERSION" node_modules/ember-source

戻り値

node_modules/ember-source/dist/ember.debug.js:RouteRecognizer.VERSION = '0.2.8';
node_modules/ember-source/dist/ember.js:RouteRecognizer.VERSION = '0.2.8';
node_modules/ember-source/dist/ember.prod.js:RouteRecognizer.VERSION = '0.2.8';

ええ、問題は[email protected]が0.2.8のdist出力でリリースされたこと

@rwjblue
何か必要な場合はお知らせください。

OK、更新されたdist出力で[email protected]をリリースしてから、リリースブランチ(https://github.com/emberjs/ember.js/commit/6c7e6950f127aa31912b5729971703c0c9615655)にぶつかり、ビルド出力で確認しました(https://github.com/components/ember/commit/4a9c7361f4f546daf3ad342da6d196b5b4b6bf20内)。

次に上記の@Glennvdが共有するひねりreleaseブランチを使用すると、アサーションが発生しない(そしてアプリが起動する)ことを確認しました。

他の誰かがここで私をサニティチェックできる場合は、2.11.2をリリースできます...

その上に。

@rwjblueは私の
私は自分のプロジェクトを構築しようとしています

devDependencies: {
// ...
"ember-source": "git://github.com/emberjs/ember.js.git#6c7e6950f127aa31912b5729971703c0c9615655"
// ...

しかし、それは失敗します

$ ember build
⠋ Building
Cannot find module 'node_modules/ember-source/dist/ember-template-compiler.js'

私は何が間違っているのですか:)?

@gmaliar ember-sourceにはリポジトリにビルドアーティファクトがないため、bowerタグを使用するか、emberをローカルで複製、ビルド、リンクする必要があります。

ありがとう@locks
@rwjblue動作していることを確認できます。

これは閉じることができ、 2.11.2正しく機能します。

確認していただきありがとうございます。

このページは役に立ちましたか?
0 / 5 - 0 評価