gpt4 book ai didi

react-native - react native 路由器通量 : TypeError: undefined is not a function (evaluating 'addListener' )

转载 作者:行者123 更新时间:2023-12-04 03:56:01 25 4
gpt4 key购买 nike

我正在使用此主要依赖项开发 native 应用程序:

  • react 原生
  • react 原生路由器通量
  • react thunk
  • 世博会

  • 我正在使用这个 package.json:
    "dependencies": {
    "expo": "23.0.4",
    "humps": "^2.0.0",
    "install": "^0.10.1",
    "lodash": "^4.17.4",
    "native-base": "^2.3.5",
    "react": "16.0.0",
    "react-native": "0.50.4",
    "react-native-extend-indicator": "^0.1.2",
    "react-native-keyboard-aware-scroll-view": "^0.4.2",
    "react-native-maps": "^0.19.0",
    "react-native-maps-directions": "^1.3.0",
    "react-native-modal-datetime-picker": "^4.13.0",
    "react-native-qrcode": "^0.2.6",
    "react-native-router-flux": "4.0.0-beta.24",
    "react-native-svg-uri": "^1.2.3",
    "react-native-swiper": "^1.5.13",
    "react-native-vector-icons": "^4.4.2",
    "react-navigation-redux-debouncer": "^0.0.2",
    "react-redux": "^5.0.6",
    "redux": "^3.7.2",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.2.0",
    "swagger-client": "2.1.32"
    }

    该应用程序正在使用 expo,因此我使用以下方法安装依赖项:
  • yarn 安装

  • 然后运行应用程序
  • yarn start --reset-cache

  • 我工作正常,因为我想添加一个新的依赖项,所以我删除了 node_modules 文件夹和 yarn.lock 文件,添加了新的依赖项并再次执行 yarn install。

    之后,我在打开应用程序时收到此错误:

    TypeError: undefined is not a function (evaluating 'addListener')



    enter image description here

    它与 react-navigation 相关,但我使用的是 react-native-router-flux 4.0.0-beta.24,它在内部使用 react-navigation ^1.0.0-beta.19。

    我最近注意到使用 react-navigation 的人对此有一些问题( https://github.com/react-navigation/react-navigation/issues/3416 ),但使用的是 beta.28 版本。

    如果我回到以前的 node_modules 文件夹(从垃圾箱),我的应用程序运行良好,所以.. 可能问题是我的 package.json 的 ^ 符号的某些依赖不再兼容.. 可能 thunk 或 react native router与我的 native 版本 react 。

    有任何想法吗?

    这是我使用 react thunk 中间件时的代码部分:
    import {applyMiddleware, compose, createStore} from 'redux';
    import thunkMiddleware from 'redux-thunk';
    import {createLogger} from 'redux-logger';
    import getRootReducer from "../reducers/index";
    import navigationDebouncer from 'react-navigation-redux-debouncer';
    import {restApi} from "../lib/restApi";

    const loggerMiddleware = createLogger({ predicate: (getState, action) => __DEV__ });

    export default function getStore(initialState) {
    const enhancer = compose(
    applyMiddleware(
    thunkMiddleware.withExtraArgument(restApi),
    navigationDebouncer(600),
    loggerMiddleware
    ),
    );
    return createStore(
    getRootReducer,
    initialState,
    enhancer
    );
    }

    这是主要的应用程序:
    import React, {Component} from 'react';
    import {Provider} from 'react-redux'
    import getStore from './src/store/configureStore'
    import {StatusBar} from 'react-native'
    import AppNavigation from './src/navigation';

    const Store = getStore();

    export default class App extends Component {

    constructor(props) {
    super(props);
    }

    async componentWillMount() {
    await Expo.Font.loadAsync({
    'Ionicons': require('native-base/Fonts/Ionicons.ttf'),
    });
    }

    render() {
    StatusBar.setHidden(true);
    return (
    <Provider store={Store}>
    <AppNavigation/>
    </Provider>
    );
    }
    }

    编辑:我发现现在 react-native-router-flux 使用 1.0.0 react-navigation(新的稳定版本),在使用 1.0.0-beta.27 版本之后..该应用程序与测试版一起使用版本但 1.0.0 版本有这个问题...
    所以我意识到您在上一个版本(1.0.0-22.beta)中使用的是固定版本的 react 导航

    所以问题是,有没有办法仍然使用 RNRF 4.0.0-beta.24 但使用固定版本(例如 1.0.0-27.beta)?

    我的意思是,我认为 4.0.0-beta.24 使用 ^1.0.0-beta19(这将导致安装最新的 1.0.0 版本)和更新的版本(如 4.0.0-beta)毫无意义.28 使用固定的较低版本 (1.0.0-beta.22)

    最佳答案

    所以在做了一些研究和一些测试之后,我想回答我的问题。

    问题出在 react 导航内部处理的依赖项 react-native-router-flux

    依赖项是:

    react-native-router-flux beta.0 - beta.24 -> react-navigation ^1.0.0-beta.19
    react-native-router-flux beta.25 - beta.28 -> react-navigation 1.0.0-beta.22

    这里最大的区别是从 0 到 beta24 的版本使用 ^

    那么.. 有什么问题呢?

    安装依赖项时,beta24 将搜索自 1.0.0-beta.19 以来的最新版本的 react-navigation,该版本是 react-navigation 的最新稳定版本 1.0.0(该库不再是 beta 版本)。

    react-native-router-flux 不支持这种依赖 .它也不提供对其他旧依赖项的支持,所以他们只是放置了 1.0.0-beta22 react 导航依赖 修复了他们最新版本的 package.json(自 beta 26 以来)。

    可能他们会修复它,因为有很多应用程序使用 redux 或其他与 react-native-router-flux 没有良好交互的库。

    所以现在.. 解决方案 对于 Redux 用户来说是使用 beta26 版本,对于不使用 redux 的人来说可能 beta27 和 beta28 就可以了。

    这里是讨论: https://github.com/aksonov/react-native-router-flux/issues/2865

    这是另一个相关问题: https://github.com/aksonov/react-native-router-flux/issues/2799

    关于react-native - react native 路由器通量 : TypeError: undefined is not a function (evaluating 'addListener' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672906/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com