redux-toolkit icon indicating copy to clipboard operation
redux-toolkit copied to clipboard

TypeError :subscriptionSelectorsRef?.current.isRequestSubscribed is not a function (it is undefined) in rtk-query-react.development.cjs

Open ashishimg27 opened this issue 11 months ago • 5 comments

ashishimg27 avatar Mar 07 '24 09:03 ashishimg27

screenshot-1709804030791

i dont know what is cause of this error can anyone help me

ashishimg27 avatar Mar 07 '24 09:03 ashishimg27

have you definitely added the middleware for RTKQ to your store?

EskiMojo14 avatar Mar 07 '24 10:03 EskiMojo14

@EskiMojo14 yes store file code -

import { configureStore } from "@reduxjs/toolkit";
import { setupListeners } from "@reduxjs/toolkit/query";

import rootReducer from "app/redux/reducers";
import validateDomainMiddleware from "app/redux/middellware/domain";
import validateSignInWithCredential from "app/redux/middellware/signIn";
import { feeds } from "app/redux/reducers/app/feeds";
import { userById } from "app/redux/reducers/app/user";
import { chats } from "app/redux/reducers/app/chat";
import userSignInMiddleware from "app/redux/middellware/user";
import { profile } from "app/redux/reducers/app/profile";
import rtkQueryErrorLogger from "app/redux/middellware/error";

export const store = configureStore({
  reducer: rootReducer,
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware({ serializableCheck: false }).concat(
      validateDomainMiddleware,
      userSignInMiddleware,
      validateSignInWithCredential,
      rtkQueryErrorLogger,
      feeds.middleware,
      userById.middleware,
      chats.middleware,
      profile.middleware
    ),
});

setupListeners(store.dispatch);

ashishimg27 avatar Mar 08 '24 04:03 ashishimg27

Please check your middleware order, that can be matters, i have had the similar experience...

haasampath avatar Apr 08 '24 05:04 haasampath

i think middleware order shouldn't matter as long as every middleware definitely returns the result of calling next(action) (apart from cases where it's specifically intending to return something different)

const brokenMiddleware = api => next => action => {
  console.log(api.getState())
  next(action)
  console.log(api.getState())
}

const workingMiddleware = api => next => action => {
  console.log(api.getState())
  const result = next(action)
  console.log(api.getState())
  return result
}

you should also make sure no middleware is marked with the async keyword, which will cause every dispatch result to be wrapped in a promise

const brokenMiddleware2 = api => next => async action => {
  console.log(api.getState())
  const result = next(action)
  console.log(api.getState())
  return result
}

EskiMojo14 avatar Apr 08 '24 05:04 EskiMojo14