Redux中间件未定义

pra*_*432 6 javascript flux ecmascript-6 babeljs redux

当我运行此代码时,我得到'中间件不是函数'错误.

import 'babel-core/polyfill';
import { thunkMiddleware, Provider } from 'redux-thunk';
import createLogger from 'redux-logger';
import { createStore, applyMiddleware } from 'redux';
import { fetchDistricts, fetchSchools } from './actions.es6.js';
import rootReducer from './reducers.es6.js';
// import App from './components/App.es6.js';

const logger = createLogger({
    level: 'info',
    collapsed: true,
    predicate: (getState, action) => {action.type; }
});


const createStoreWithMiddleware = applyMiddleware(
    thunkMiddleware,
    logger
)(createStore);

const store = createStoreWithMiddleware(rootReducer);

store.dispatch(fetchDistricts('California')).then(state =>
    {
        var districts = store.getState().districtsByState['California'].districts;
        var fetchSchoolsDfds = [];
        for(var i = 0; i < districts.length; i++) {
            fetchSchoolsDfds.push(store.dispatch(fetchSchools(districts[i].id)));
        }
    }
);

let rootElement = document.getElementById('root');
Run Code Online (Sandbox Code Playgroud)

这是在ES6中,我正在使用Babel进行转换.如果你愿意,我可以发布已编译的代码,但它确实很长.

为什么我收到错误?

编辑

好吧,我跳了进去,看着被转换的js.看起来有这个功能 -

var createStoreWithMiddleware = _redux.applyMiddleware(_reduxThunk.thunkMiddleware, logger)(_redux.createStore);
Run Code Online (Sandbox Code Playgroud)

和_reduxThunk没有thunkMiddleware属性.在我控制台登出_reduxThunk的控制台中,我得到了回复

function thunkMiddleware(_ref) {
  var dispatch = _ref.dispatch;
  var getState = _ref.getState;

  return function (next) {
    return function (action) {
      return typeof action === 'function' ? action(dispatch, getState) : next(action);
    };
  };
}
Run Code Online (Sandbox Code Playgroud)

所以它看起来像_reduxThunk IS thunkMiddleware.我想这是一个巴贝尔错误 - 为什么巴贝尔犯这个错误?

pra*_*432 5

好.这是非常基本和愚蠢的.原来,提供商不在'redux-thunk'中并处于'redux-react'中.

这只是一个错误的错误消息.