вчера я изменил способ проверки аутентификации, поместил логику в файл index.js приложения React.Я хочу протестировать некоторые вещи, и я получаю сообщение об ошибке, в котором говорится, что localStorage не определено, хотя я настроил фиктивный localStorage в блоке beforeAll.
Это лучший способ сделать это, или есть лучший способ или какЯ избегаю этой ошибки?
Вот индексный файл:
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import { Router } from "react-router-dom";
import { createStore, applyMiddleware, compose } from "redux";
import { Provider } from "react-redux";
import thunk from "redux-thunk";
import logger from "redux-logger";
import history from "./history";
import jwt_decode from 'jwt-decode';
import "./style.css";
import "semantic-ui-css/semantic.css";
import reducer from "./reducers/index";
import { getCurrentUser, logout } from "./actions/authActions/authActions";
export const store = createStore(reducer, compose(applyMiddleware(thunk, logger)));
if (localStorage.getItem('token')) {
// decode token and get user info and expiration
// decoded = ID
const decoded = jwt_decode(localStorage.getItem('token'))
// set User and isAuthenticated (to keep user logged in)
store.dispatch(getCurrentUser(decoded._id))
// check for expired token
const currentTime = Date.now() / 1000
if (decoded.exp < currentTime) {
// Log out the user
store.dispatch(logout())
// Rediret to login page if token is expired
history.push('/login')
}
}
ReactDOM.render(
<Provider store={store}>
<Router history={history}>
<App />
</Router>
</Provider>,
document.getElementById("root")
);