Ошибка типа: промежуточное ПО не является функцией в магазине - PullRequest
3 голосов
/ 23 марта 2019

У меня нижеприведенный код для объединения накопителя и редуктора в response-redux.
Он отлично работает в моих предыдущих приложениях, возможно, из-за версии реагировать и реагировать на избыточность.

  • Но теперь я настроил свежий реагирующий проект с последней версией, но получаю сообщение об ошибке.

TypeError: промежуточное ПО не является функцией

Код:

import 'rxjs'
import { createStore, combineReducers, applyMiddleware } from 'redux'
import { reducer as formReducer } from 'redux-form'
import thunk from 'redux-thunk'
import promise from 'redux-promise-middleware'
import { createEpicMiddleware, combineEpics } from 'redux-observable'
// import { createLogger } from 'redux-logger'
import user, { userEpic } from './user/duck'
import userApp, { userAppEpic } from './user-app/duck'

import app from './app'

// Bundling Epics
const rootEpic = combineEpics(
  userEpic,
  userAppEpic
)

// Creating Bundled Epic
const epicMiddleware = createEpicMiddleware()

// Define Middleware
const middleware = [
  thunk,
  promise(),
  epicMiddleware
]

// Define Reducers
const reducers = combineReducers({
  app,
  user,
  userApp,
  form: formReducer
})

// Create Store
export default createStore(reducers,
  applyMiddleware(...middleware))
epicMiddleware.run(rootEpic)

Может кто-нибудь помочь мне решить проблему?

1 Ответ

3 голосов
/ 23 марта 2019

Согласно промежуточному программному обеспечению Doc :

... (аргументы): функции, соответствующие API промежуточного программного обеспечения Redux.Каждое промежуточное ПО получает функции диспетчера Store и getState в качестве именованных аргументов и возвращает функцию.

Это означает, что нам нужно передать функции в applyMiddleware.В вашем случае вы передаете promise() вместо promise (функция), поэтому она не работает с ошибкой:

промежуточное ПО не является функцией

Напишите это так:

const middleware = [ thunk, promise, epicMiddleware ];
...