TypeError: 0, _$$_REQUIRE(_dependencyMap[15], "redux").isAction 不是一个函数(未定义)

问题描述 投票:0回答:1

编辑:在过去的 12 个多小时内,我已经对该文件的几乎所有可能的内容进行了广泛的测试。我已经多次删除了我的每个node_modules(它是一个monorepo)并重新安装了它们。我已注释掉并调试了此文件中的所有内容。

当您删除持久化的减速器时,一切都有效,并且不适用于持久化的减速器。 我认为这不应该像现在这样被否决 - 这不是一个低努力的问题 - 这可能是由于 redux-persist 的问题,这是一个较旧但仍然非常流行的库,尚未得到维护,并且很难找到解决方案

我现在还编辑了该文件,以最简化的方式重现该问题,但其核心与我在原始帖子中提到的问题相同 - redux-persisted reducer

注意,我删除了默认设置中包含的几项内容:

https://redux-toolkit.js.org/usage/usage-guide#use-with-redux-persist

降低示例的复杂性。如果需要,我可以提供完整的 store.js 文件,但人们似乎觉得它对于故障排除来说过于复杂。

"@reduxjs/toolkit": "^2.2.6",
"react": "18.2.0",
"react-native": "0.72.10",
"redux": "^4.2.1",
"redux-api-middleware": "^3.2.0",
"redux-mock-store": "^1.5.4",
"redux-persist": "^6.0.0",
"redux-persist-expire": "^1.1.0",
"redux-persist-transform-immutable": "^5.0.0",
"redux-saga": "^1.3.0",

还有商店:

import { configureStore } from '@reduxjs/toolkit';
import AsyncStorage from '@react-native-async-storage/async-storage';
import {
  persistStore,
  persistReducer,
} from 'redux-persist';
import rootReducer from 'reducers/rootReducer';

const persistConfig = {
  key: 'root',
  storage: AsyncStorage,
};

const persistedReducer = persistReducer(persistConfig, rootReducer);

export const makeStore = () => {
  const store = configureStore({
    reducer: persistedReducer,
  });

  return store;
};

export const store = makeStore();

export const persistor = persistStore(store);

所以如果我改变这一行:

reducer: persistedReducer,

至此行:

reducer: rootReducer,

并删除这一行:

export const persistor = persistStore(store);

一切正常

但无论出于何种原因,我生成的减速器总是在 redux persist 的情况下未定义。如果没有 redux persist,就不会出现这样的问题

reactjs redux redux-toolkit redux-persist
1个回答
0
投票

这是由于 Redux 的最新版本添加了 isAction 用于打字。从 4.2.1 更新到 5.0.1 解决了该问题(我通常会避免在几次迭代中更新到主要修订版更新,以防止潜在的兼容性问题和早期采用者错误)

© www.soinside.com 2019 - 2024. All rights reserved.