captbaritone / raven-for-redux

A Raven middleware for Redux
295 stars 25 forks source link

calls next(action) but doesn't return it #11

Closed olslash closed 7 years ago

olslash commented 7 years ago

I was running into an error where I was chaining off a promise returned by redux-api-middleware:

this.props.createThing().then((result) => ...)

Without raven-for-redux, result is the correct value (the result of the API call). With raven-for-redux, result is undefined.

I modified the middleware to remove the call here: https://github.com/captbaritone/raven-for-redux/blob/master/index.js#L33, which calls next(action) but does not return it. I replaced it with return next(action) and my app again works as expected.

looking at http://redux.js.org/docs/advanced/Middleware.html, all the examples return next(action) at some point. I believe it's part of the contract a middleware has to fulfill.

I believe the fix for this is:

      // Set the action as context in case we crash in the reducer.
      const result = next(action)
      const extra = { lastAction: action };
      Raven.context({ extra }, () => result);

      ...

      return result; 
captbaritone commented 7 years ago

I've just released 0.7.0. With a fix. Can you try it and see if it resolves your problem?

olslash commented 7 years ago

Thanks for the quick turnaround @captbaritone. Yep, that fixed it!

captbaritone commented 7 years ago

Thanks for digging into it as far as you did. Made the fix easy.