TypeError: промежуточное ПО не является функцией
Я пытаюсь применить redux в моем приложении. Из-за этих ошибок я не могу:
![enter image description here]()
![enter image description here]()
Я уверен, что я уже установил все зависимости, которые мне нужны. Вот важная часть моего пакета.json
"dependencies": {
"react-redux": "^5.0.6",
"redux": "^3.7.2",
"redux-logger": "^3.0.6",
"redux-promise": "^0.5.3",
"redux-thunk": "^2.2.0",
}
Вот часть моего index.js, которая реализует redux
import { createStore, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';
import thunkMiddleware from 'redux-thunk';
import createLogger from 'redux-logger';
import reducers from './reducers';
const logger = createLogger();
const store = createStore(reducers,
applyMiddleware(
thunkMiddleware, logger
)
)
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
Ответы
Ответ 1
В соответствии с документами вы смешиваете использование redux-logger
Вам нужно либо импортировать определенную функцию createLogger
import { createLogger } from 'redux-logger'
const logger = createLogger({
// ...options
});
Или используйте импорт по умолчанию
import logger from 'redux-logger'
И тогда ваш код должен быть в порядке
const store = createStore(
reducers,
applyMiddleware(thunkMiddleware, logger)
)
Ответ 2
Я не вижу реагирования и реагирования в ваших зависимостях, и он не включен в операторы импорта.
Позвольте мне представить вам пример того, как я сделал приложение в последнее время, также используя инструменты разработчика decx, которые потрясающе.
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
import reduxThunk from 'redux-thunk';
import App from './components/App';
import authReducer from '../reducers/auth';
import urlsReducer from '../reducers/urls';
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
//Store creation
const store = createStore(
combineReducers({
auth: authReducer,
urls: urlsReducer
}),
composeEnhancers(applyMiddleware(reduxThunk))
);
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
Я бы подумал, что вам просто нужно добавить регистратор, после reducexThunk. И если вы уже объединили свои редукторы, тогда просто предоставляйте редукторы вместо combReducers.
С уважением, Рафаэль
Ответ 3
Я получал ту же ошибку TypeError: промежуточное ПО не является функцией.
import { createStore, combineReducers, applyMiddleware } from "redux";
import { createLogger } from "redux-logger";
import thunk from "redux-thunk";
import math from "./reducers/mathReducer";
import user from "./reducers/userReducer";
const logger = createLogger();
export default createStore(
combineReducers({ math, user }),
{},
applyMiddleware(logger, thunk)
);
Ответ 4
самый простой способ исправить проблему import * как thunk из 'redux-thunk';
createStore (rootReducer, InitialState, applyMiddleware (thunk.default));