Reaccionar flujo de enrutador nativo: TypeError: undefined no es una función (evaluar 'addListener')

Estoy trabajando en una aplicación nativa de reacción usando estas dependencias principales:

reaccionar nativoreaccionar flujo de enrutador nativoreaccionarexpo

Estaba trabajando usando este paquete.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"
  }

La aplicación está usando expo, así que instalo las dependencias usando:

instalar hilo

y luego ejecuta la aplicación

inicio de hilo --reset-cache

Estaba trabajando bien ya que quería agregar una nueva dependencia, por lo que eliminé la carpeta node_modules y el archivo yarn.lock, agregué la nueva dependencia y ejecuté la instalación de hilo nuevamente.

Después de eso, obtengo este error al abrir la aplicación:

TypeError: undefined no es una función (evaluar 'addListener')

está relacionado con react-navigation, pero estoy usando react-native-router-flux 4.0.0-beta.24 que usa react-navigation ^ 1.0.0-beta.19 internamente.

Recientemente me di cuenta de que las personas que usan react-navigation están teniendo algunos problemas con esto (https://github.com/react-navigation/react-navigation/issues/3416) pero usando la versión beta.28.

Si vuelvo a una carpeta node_modules anterior (desde la papelera), mi aplicación se ejecuta bien, así que ... lo más probable es que haya alguna dependencia con el^ El símbolo de mi package.json ya no es compatible.

¿algunas ideas?

Aquí está la parte del código cuando uso el middleware 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
    );
}

y aquí está la aplicación principal:

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>
        );
    }
}

EDITAR: he descubierto que ahora react-native-router-flux usa 1.0.0 react-navigation (la nueva versión estable), y después de que usaba la versión 1.0.0-beta.27 ... la aplicación funciona con la versión beta versión pero tiene este problema con la versión 1.0.0 ... así que me di cuenta de que está utilizando una versión fija de react navigation en su última versión (1.0.0-22.beta)

entonces la pregunta es, ¿hay alguna manera de seguir usando RNRF 4.0.0-beta.24 PERO usando una versión fija (como 1.0.0-27.beta por ejemplo)?

Quiero decir, creo que no tiene sentido que 4.0.0-beta.24 use ^ 1.0.0-beta19 (que dará como resultado la instalación de la última versión 1.0.0) y una versión más nueva como 4.0.0-beta .28 usa una versión inferior fija (1.0.0-beta.22)

Respuestas a la pregunta(1)

Su respuesta a la pregunta