【问题标题】:Redux-Persist: TypeError: Cannot read property 'getItem' of undefinedRedux-Persist:TypeError:无法读取未定义的属性“getItem”
【发布时间】:2021-03-12 22:02:44
【问题描述】:

我正在开发一个 react 应用程序,最近在我的 mac 上升级到 node12.10.0,并且发现了大量的包问题。我在我的项目中升级了很多包,但是当我调用persistor.purge() 时似乎出现了一个错误:

TypeError: Cannot read property 'getItem' of undefined
getStoredState
node_modules/redux-persist/es/getStoredState.js:19
  16 |   deserialize = defaultDeserialize;
  17 | }
  18 | 
> 19 | return storage.getItem(storageKey).then(function (serialized) {
  20 |   if (!serialized) return undefined;else {
  21 |     try {
  22 |       var state = {};
View compiled
Object../src/index.js
src/index.js:26
  23 | debugger;
  24 | debugger;
  25 | 
> 26 | getStoredState({}).then((err, restoredState) => {
  27 |     if(restoredState) {
  28 |         let storedAppVersion = restoredState.app ? restoredState.app.version : null;
  29 |         // Purge the persisted state if the version has changed

当我在以下减速器代码中点击 persistor.purge() 时,错误本身似乎发生了:

case REHYDRATE:
      let isValid = isTokenInLocalStorageValid();
      if(isValid) {
        let storedState = action.payload.user;
        let newState = Object.assign({}, storedState, { status: null });
        return newState;
      }
    debugger;
    debugger;
      persistor.purge();

这是我创建 peristor 和 store 的代码:

export const history = createBrowserHistory();

const sagaMiddleware = createSagaMiddleware();
const initialState = {}
const middleware = [
    thunk,
    sagaMiddleware,
    routerMiddleware(history)
]

const composedEnhancers = compose(
    applyMiddleware(...middleware)
)

debugger;
debugger;

const persistConfig = {
    key: 'root',
    storage: localforage,
}

const persistedReducer = persistReducer(persistConfig, rootReducer(history));
const store = createStore(
    persistedReducer,
    initialState,
    composedEnhancers
)
store.runSaga = sagaMiddleware.run(sagas);
let persistor = persistStore(store)

export default () => {
    return { store, persistor }
}

我查看了设置示例,但没有发现问题出在哪里。

【问题讨论】:

    标签: node.js reactjs redux-saga redux-persist connected-react-router


    【解决方案1】:

    由于某种原因,它说存储未定义。我敢肯定你很可能已经检查过了,但是在错误指向的文件中;您要导入存储吗?

    【讨论】:

    • 是的。它应该在这里发生: const persistConfig = { key: 'root', storage: localforage, }
    • 我也无法发现问题。你熟悉反应测试库吗?它包含在 React 应用程序中,在调试中非常有用;尤其是与笑话结合使用时;我相信也包括在内。
    • 我将不得不查看反应测试库。暂时不熟悉。
    • 这太棒了,当你无法弄清楚出了什么问题时,它真的能发现问题
    猜你喜欢
    • 2020-10-10
    • 2019-02-15
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 2019-08-02
    • 2017-06-22
    • 2021-01-15
    相关资源
    最近更新 更多