'React require("history").createBrowserHistory` instead of `require("history/createBrowserHistory")
So basically i am having a problem in using the history library in react.
Is it because of the latest version should i try to downgrade the history version but as the error states that Support for the latter will be removed in the next major release. so how should i change and where should i change it?
it says:
Warning: Please use `require("history").createBrowserHistory` instead of `require("history/createBrowserHistory")`. Support for the latter will be removed in the next major release.
AND
Warning: Please use `require("history").createHashHistory` instead of `require("history/createHashHistory")`. Support for the latter will be removed in the next major release.
I am not quite sure how to fix it.
import createHistory from './history'
import { applyMiddleware, compose, createStore } from 'redux'
import { routerMiddleware } from 'connected-react-router'
import { persistStore, persistReducer } from 'redux-persist'
import storage from 'redux-persist/es/storage'
import thunk from 'redux-thunk'
import createRootReducer from './reducers'
export const history = createHistory();
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const persistConfig = {
key: 'root',
storage
};
const reducers = persistReducer( persistConfig, createRootReducer(history));
const exampleMiddleware = store => next => action => {
// if (action.type === 'message'){
// do something
// } else {
// next(action);
// }
}
export default () => {
const store = createStore(
reducers,
composeEnhancers(applyMiddleware(routerMiddleware(history), thunk, exampleMiddleware))
);
let persistor = persistStore(store)
return { store, persistor }
}
import React, { Component } from 'react';
import { Provider, ReactReduxContext } from 'react-redux';
// import { createStore } from 'redux';
import { ConnectedRouter } from 'connected-react-router'
import { PersistGate } from 'redux-persist/integration/react'
import configureStore, { history } from './configureStore'
import Routers from './Routers';
const { persistor, store } = configureStore();
class App extends Component {
render() {
return (
<Provider store={store} context={ReactReduxContext}>
<div> SYNTIFY </div>
<PersistGate loading={null} persistor={persistor}>
<ConnectedRouter history={history} context={ReactReduxContext}>
<Routers />
</ConnectedRouter>
</PersistGate>
</Provider>
);
}
}
export default App;
history.js
import createHistory from 'history/createBrowserHistory';
export default createHistory;
As it showing error nothing gets rendered.
Solution 1:[1]
Import creatBrowserHistory with curly brackets. It's exported as a named export.
// history.js
import { createBrowserHistory } from "history";
export default createBrowserHistory();
Then import and use it in index.
// index.js
import history from "./history";
import { Provider } from "react-redux";
import store from "./store/store";
const AppContainer = () => (
<Router history={history}>
<Provider store={store}>
<Route path="/" component={App} />
</Provider>
</Router>
);
Solution 2:[2]
I've changed this import createHistory from 'history/createBrowserHistory'
to this
import { createBrowserHistory } from 'history'
Solution 3:[3]
In my code, this error occurs when running a unit test. An enzyme or jest is possible by interpreting the ES6 code differently. Make in the package history export default.
My import code now
import { createBrowserHistory } from 'history'
Here is the full history.js code
import { createBrowserHistory } from 'history';
export default createBrowserHistory();
Solution 4:[4]
goto node_modules > dva > lib > index.js

source from: https://www.cnblogs.com/fairylee/p/11198868.html
Solution 5:[5]
Using the suggestion I was able to get rid of the error in the console on render.
// NO IMPORT ABOVE (just set the import directly to a variable)
const history = require("history").createBrowserHistory()
// then you can
if( *some-requirement*){
history.push("/desiredRoute")
}.
// right from your App.js
Solution 6:[6]
just create new file for history and add
import createHistory from 'history/createBrowserHistory';
export default createHistory();
import history from 'the file path created for history it will work'
Solution 7:[7]
This import worked for me var createHistory = require('history').createBrowserHistory;
instead of this import import createHistory from 'history/createBrowserHistory';
The history file is given below:
var createHistory = require('history').createBrowserHistory;
export default createHistory();
Solution 8:[8]
Update the React-Router-Dom library
If you're using yarn
write => yarn add React-Router-Dom
it will automatically update to the current version of Router library
Solution 9:[9]
Try this: Install this version of [email protected]. If there is an error, install [email protected].
Solution 10:[10]
try this
go to
node_modules/history/createBrowserHistoryand do as the warning saysdelete this ('createBrowserHistory') replace it with this in new line:
require("history").createBrowserHistory
then
go to
node_modules/history/createHashHistorydelete ('createHashHistory') replace it with this in new line:
require("history").createHashHistory
Solution 11:[11]
you need an API migration,
// createBrowserHistory was createHistory in createBrowserHistory
import { createBrowserHistory as history} from 'history'
import { Provider } from "react-redux";
import store from "./store/store";
const AppContainer = () => (
<Router history={history}>
<Provider store={store}>
<Route path="/" component={App} />
</Provider>
</Router>
);
Thx to @CrsCaballero's
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow

