Redux RXJS订阅主题-操作必须是普通对象。使用自定义中间件进行异步操作

Redux RXJS订阅主题-操作必须是普通对象。使用自定义中间件进行异步操作,redux,rxjs,Redux,Rxjs,我想订阅一个主题。这在第一次按预期工作,但在第二次抛出上面的错误,我不知道在哪里修复它 export function uploadSceneFile(action$, store) { return action$.ofType(CREATE_SCENE_SUCCESS) .mergeMap(({payload}) => UploadSceneWithFile(payload) .map(res => { if (res.

我想订阅一个主题。这在第一次按预期工作,但在第二次抛出上面的错误,我不知道在哪里修复它

export function uploadSceneFile(action$, store) {
  return action$.ofType(CREATE_SCENE_SUCCESS)
    .mergeMap(({payload}) =>
      UploadSceneWithFile(payload)
        .map(res => {
          if (res.progress > 0){
              return { type: UPLOAD_SCENE_PROGRESS, scene: res }
          }
          else if(res.progress === -1){
              return { type: UPLOAD_SCENE_SUCCESS, scene: res }
          }
        })
    )
}
它被设计为监听正在创建的场景,发送上传进度通知,然后发送成功消息

该错误在第二次运行时直接从该行抛出

onProgress:(val)=>subject$.next({…场景,进度:val})

错误消息

   Subscriber.js:242 Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
    at Object.performAction (<anonymous>:1:40841)
    at liftAction (<anonymous>:1:34377)
    at dispatch (<anonymous>:1:38408)
    at createEpicMiddleware.js:59
    at createEpicMiddleware.js:59
    at SafeSubscriber.dispatch [as _next] (applyMiddleware.js:35)
    at SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
    at SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.next (Subscriber.js:185)
    at Subscriber../node_modules/rxjs/Subscriber.js.Subscriber._next (Subscriber.js:125)
    at Subscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at SwitchMapSubscriber../node_modules/rxjs/operators/switchMap.js.SwitchMapSubscriber.notifyNext (switchMap.js:126)
    at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
    at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:145)
    at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
    at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:145)
    at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
    at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at MapSubscriber../node_modules/rxjs/operators/map.js.MapSubscriber._next (map.js:85)
    at MapSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at Subject../node_modules/rxjs/Subject.js.Subject.next (Subject.js:55)
    at S3Upload.onProgress (uploadSceneFile.js:27)
    at S3Upload.<anonymous> (s3upload.js:139)
Subscriber.js:242未捕获错误:操作必须是普通对象。使用自定义中间件进行异步操作。
在对象执行时(:1:40841)
提升时(:1:34377)
调度时(:1:38408)
在createEpicMiddleware.js:59
在createEpicMiddleware.js:59
SafeSubscriber.dispatch[as_next](applyMiddleware.js:35)
在SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.\uu tryOrUnsub(Subscriber.js:238)
在SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.next(Subscriber.js:185)
在Subscriber../node_modules/rxjs/Subscriber.js.Subscriber.\u next(Subscriber.js:125)
在订阅服务器处../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在SwitchMapSubscriber../node_modules/rxjs/operators/switchMap.js.SwitchMapSubscriber.notifyNext(switchMap.js:126)
在InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber.\u下一步(InnerSubscriber.js:23)
在InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext(mergeMap.js:145)
在InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber.\u下一步(InnerSubscriber.js:23)
在InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext(mergeMap.js:145)
在InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber.\u下一步(InnerSubscriber.js:23)
在InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在MapSubscriber../node\u modules/rxjs/operators/map.js.MapSubscriber.\u next(map.js:85)
在MapSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在Subject../node_modules/rxjs/Subject.js.Subject.next(Subject.js:55)
在S3Upload.onProgress(uploadSceneFile.js:27)
在S3Upload。(s3upload.js:139)

在您的
上传场景文件
的内部
映射中,您有一个
if
语句,后跟一个
else if
语句,如果两者都不是
true
映射将返回
未定义的
,而不是操作

.map(res=>{
如果(恢复进度>0){
返回{type:UPLOAD\u SCENE\u PROGRESS,SCENE:res}
}
else if(res.progress==-1){
返回{type:UPLOAD\u SCENE\u SUCCESS,SCENE:res}
}
//这里应该返回一个操作!
})

请注意,当传递
未定义的
操作时,确定某个动作是否为普通对象的方法将影响您看到的错误。

在内部
映射中有
if
else if
-在
上传场景文件中
-那么它是否可能返回
未定义的
?我爱你。似乎奏效了。。把它作为答案,我会把它标对的。(我添加了一个未定义的返回操作,它似乎使错误消失了)
   Subscriber.js:242 Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
    at Object.performAction (<anonymous>:1:40841)
    at liftAction (<anonymous>:1:34377)
    at dispatch (<anonymous>:1:38408)
    at createEpicMiddleware.js:59
    at createEpicMiddleware.js:59
    at SafeSubscriber.dispatch [as _next] (applyMiddleware.js:35)
    at SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
    at SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.next (Subscriber.js:185)
    at Subscriber../node_modules/rxjs/Subscriber.js.Subscriber._next (Subscriber.js:125)
    at Subscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at SwitchMapSubscriber../node_modules/rxjs/operators/switchMap.js.SwitchMapSubscriber.notifyNext (switchMap.js:126)
    at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
    at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:145)
    at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
    at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:145)
    at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
    at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at MapSubscriber../node_modules/rxjs/operators/map.js.MapSubscriber._next (map.js:85)
    at MapSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at Subject../node_modules/rxjs/Subject.js.Subject.next (Subject.js:55)
    at S3Upload.onProgress (uploadSceneFile.js:27)
    at S3Upload.<anonymous> (s3upload.js:139)