2017-04-19 73 views
1

我使用下列库:终极版devtools扩展错误时调度@ NGRX /路由器店行动

  • 角4
  • @ NGRX /路由器店
  • @ NGRX /商店devtools

就在最近,试图派遣与relativeTogo路由器行动,目前活跃路由时:

go(['test', id], {}, {relativeTo: this._active})) 

我收到此错误:

ERROR TypeError: toISOString is not a function 
    at String.toJSON (<anonymous>) 
    at Object.<anonymous> (shim.js:736) 
    at derez (<anonymous>:2:5166) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5605) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5605) 
    at derez (<anonymous>:2:5787) 
    at derez (<anonymous>:2:5787) 

似乎有与devtools处理ActivatedRoute在有效载荷(类似于this issue)的问题。

如果我实现了go行动创造者的新版本(如下建议:Redux Devtools Extension Troubleshooting)为toJSON功能添加到NavigationExtras,那么它所有的作品:

go(path: string|any[], query?: any, extras?: NavigationExtras): any { 
    extras['toJSON'] = function(): any { 
     return { ...this, relativeTo: this.relativeTo.snapshot.url }; 
    }; 

    const payload = { path, query, extras }; 
    return { type: routerActions.GO, payload }; 
} 

有没有其他人遇到这个问题?对于如何解决这个问题,有任何的建议吗?

更新:看起来它也有一些与延迟加载路线有关。只有当前路由是延迟加载模块的一部分时才会发生错误(即通过loadChildren

回答

0

您很可能传递了无法序列化的React合成事件。查看类似的问题和故障排除。请注意,该问题的解决方案在React 16中不可用,因为我们依赖于React内部。因此,我建议选择troubleshooting.

的解决方案之一。但是,如果我们可以让jsan不要抛出这种情况,但至少要跳过这些数据,那将是一件好事。如果你可以在这里添加一个测试用例,那将会非常感激。似乎toISOString的问题仅限于特定事件,因为我无法再现。

+0

我能够使用提供的链接进行解析。此外,在https://github.com/ngrx/platform/pull/12的讨论中也提到了这个相同的问题,所以希望这个问题很快就会被框架解决 –

0

redux-devtools试图解析一个函数,因为json通常会工作,但它假设商店中的所有东西都是对象而不是函数,所以它打破了redux的基本思想,就是用事件管理状态发射功能使用角度标准