"The reducer was expected to be a function." only on the server

I am creating an isomorphic application and I have a weird problem with my store and reducers. When I import my reducers into the client side store, it all works:

import reducers from '../Reducers';
...
let store = createStore(reducers, initial, composeEnhancers(applyMiddleware(...middleware)));
export default store;

      

But when I try to do the same on the server:

import reducers from '../source/js/Reducers';

      

I am getting an error in the console

Error: Reducer is expected to be a function.

My reducers are as follows:

import { INSERT_POST, INSERT_CONTENT, BUMP_PAGE, FETCH_COLLECTION } from '../Actions/Content';

const defaultState = {
  currentPage: 0,
  nextPage: 1,
  content: [],
  fetched: []
};

const reducer = (state = defaultState, action) => {
  switch (action.type) {
    case INSERT_POST:
      return { ...state, content: [ ...state.content, action.payload ], fetched: [ ...state.fetched, action.url ] };
    case INSERT_CONTENT:
      const newState = {...state};
      newState.content[action.payload.id].content = action.payload.data;

      return newState;
    case `${FETCH_COLLECTION}_SUCCESS`:
      return { ...state, fetched: [ ...state.fetched, action.meta.previousAction.payload.request.url ]};
    case BUMP_PAGE:
      return { ...state, currentPage: state.nextPage, nextPage: ++state.nextPage };
    default:
      return state;
  }
};

export default reducer;

      

...

import { START_TRANSITION, END_TRANSITION, TOGGLE_TRANSITION } from '../Actions/Transitions';

const defaultState = {
  loaded: true
};

const reducer = (state = defaultState, action) => {
  switch (action.type) {
    case START_TRANSITION:
      return { ...state, loaded: false };
    case END_TRANSITION:
      return { ...state, loaded: true };
    case TOGGLE_TRANSITION:
      return { ...state, loaded: !state.loaded };
    default:
      return state;
  }
};

export default reducer;

      

And the main reducer:

import { combineReducers } from 'redux';

import Transitions from './Transitions'
import Content from './Content';

export default combineReducers({
  Transitions,
  Content
});

      

I don't know what to do about it. This is the first time I see such an error. What can I do?

+3


source to share





All Articles