首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redux-observable:未捕获TypeError:无法读取未定义的属性“”apply“”

redux-observable:未捕获TypeError:无法读取未定义的属性“”apply“”
EN

Stack Overflow用户
提问于 2018-09-26 23:42:11
回答 1查看 722关注 0票数 0

你好,我正在尝试redux-observable的一个简单示例。这是一个用户注册的示例。应用程序甚至都没有启动。我最终得到了错误。当我在chrome中调试时,我得到了一个未定义的epics数组。我不明白我错过了什么。你能帮帮我吗?

下面是组合史诗

代码语言:javascript
复制
import {combineEpics} from "redux-observable";
import { ajax } from 'rxjs/observable/dom/ajax';
import  {  map,  catchError, mergeMap } from 'rxjs/operators'
import {ofType} from 'redux-observable'
import { merge } from 'rxjs/observable/merge';

import { createUserSuccess ,CREATE_USER_FAILURE,CREATE_USER}  from '../actions/createUser';


const createUserEpic = action$ => action$.pipe(
    ofType(CREATE_USER),
    mergeMap(action => ajax.post("http://localhost:8080/signup", action.payload).pipe(
        map(response => createUserSuccess(response)),
        catchError(error => of({
            type: CREATE_USER_FAILURE,
            payload: error.xhr.response,
            error: true
        }))
    ))
);

 const rootEpic = combineEpics(

     createUserEpic


);



 export default rootEpic;

存储和中间件初始化:

代码语言:javascript
复制
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import { createStore, applyMiddleware } from "redux";
import { BrowserRouter, Route, Switch } from "react-router-dom";
import { createEpicMiddleware } from 'redux-observable';


import PostsIndex from "./components/posts_index";
import reducers from "./reducers";

import epics from "./epics";



//import PostsIndex from "./components/posts_index";
import Login from "./components/login";
import Signup from "./components/signup";
//import PostsShow from "./components/posts_show";

const epicMiddleware = createEpicMiddleware();
const createStoreWithMiddleware = applyMiddleware(epicMiddleware)(createStore);

const store = createStoreWithMiddleware(reducers);

epicMiddleware.run(epics);

ReactDOM.render(
    <Provider store={store}>
        <BrowserRouter>
            <div>
                <Switch>


                    <Route path="/signup" component={Signup} />
                    <Route path="/" component={Login} />

                </Switch>

            </div>
        </BrowserRouter>
    </Provider>,
    document.querySelector(".container")

);

createUser.js

代码语言:javascript
复制
export const CREATE_USER = "create_user";
export const CREATE_USER_FAILURE = "create_user_failure"
const ROOT_URL = "http://localhost:8080/signup";
const API_KEY = "?key=PAPERCLIP1234";





export function createUserSuccess(response) {

    return {
        type: CREATE_USER,
        payload: response
    };

}
export function createUserFailure(error) {
    return {
        type: CREATE_USER_FAILURE,
        payload: error
    };
}



Uncaught TypeError: Cannot read property 'apply' of undefined
    at merger (combineEpics.js:22)
    at MapSubscriber.eval [as project] (createEpicMiddleware.js:36)
    at MapSubscriber._next (map.js:79)
    at MapSubscriber.Subscriber.next (Subscriber.js:93)
    at Subject.next (Subject.js:55)
    at Function.epicMiddleware.run (createEpicMiddleware.js:70)
    at eval (index.js:49)
    at Object../src/index.js (bundle.js:10320)
    at __webpack_require__ (bundle.js:20)
    at eval (webpack:///multi_(webpack)-dev-server/client?:2:18)
EN

回答 1

Stack Overflow用户

发布于 2018-09-27 02:45:22

问题出在旧版本的rxjs上。我们需要将rxjs版本更新为6。

代码语言:javascript
复制
"redux-observable": "^1.0.0",
"rxjs": "^6.0.0",
"rxjs-compat": "^6.3.3"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52521605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档