Ember.js: 3.0.0にアップグレードしてからの `transitionTo`のエラー

作成日 2018年03月26日  ·  3コメント  ·  ソース: emberjs/ember.js

いくつかのプロジェクトを3.0.0にアップグレードしましたが、そのうちの1つは問題ありませんが、 transitionToを呼び出すと、もう1つはエラーをスローします。

router.js:1011 Uncaught Error: More context objects were passed than there are dynamic segments for the route: projects
    at NamedTransitionIntent.applyToHandlers (router.js:1011)
    at NamedTransitionIntent.applyToState (router.js:940)
    at Router.getTransitionByIntent (router.js:1229)
    at Router.transitionByIntent (router.js:1348)
    at doTransition (router.js:1947)
    at Router.transitionTo (router.js:1418)
    at Class._doTransition (router.js:561)
    at Class.transitionTo (routing.js:18)
    at session.save.then.s (session.js:104)
    at tryCatcher (rsvp.js:215)

問題はapplyToHandlersにあるようです:

var objects = this.contexts.slice(0);
// ...
if (objects.length > 0) {
  throw new Error('More context objects were passed than there are dynamic segments for the route: ' + targetRouteName);
}

デバッガーでそれを見ると、何らかの理由でこれを2回実行しているように見えます。最初のパスでは、 objects[]です(ここには動的セグメントがないため)。 2番目は[undefined]で、長さの検証に失敗します。

他のアプリではこの問題が発生しないので、Emberでエッジケースに遭遇したのか、ここで自分のコードに問題が発生したのかわかりません。これをさらに調べることができます。

Needs Reproduction

最も参考になるコメント

少し調べてみると、これはプライベートルーティングサービスrouting: service('-routing')を使用したサービスでのみ発生することがわかりました。

router: service()に置き換えると問題が解決しますが、これが文書化されている場所はありますか? パブリックルーターサービスはまだ来ていないという印象を受けました。

全てのコメント3件

うーん、それはおそらくあなたのセットアップに関連しているようです(これは他の人から報告されていません)、私たちが追跡しやすくするために、より小さなデモアプリで分離してみてください?

少し調べてみると、これはプライベートルーティングサービスrouting: service('-routing')を使用したサービスでのみ発生することがわかりました。

router: service()に置き換えると問題が解決しますが、これが文書化されている場所はありますか? パブリックルーターサービスはまだ来ていないという印象を受けました。

@artcommacodeはい、 2.15リリースについての投稿で発表されました

それではこれを閉じます。

ありがとう!

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