Redux TypeError: Невозможно прочитать свойство 'apply' из неопределенного - PullRequest
0 голосов
/ 28 ноября 2018

Я отключил реагирование на devtools и redux devtools.

Я искал способы решения этой проблемы в течение нескольких часов, и большинство проблем находятся в процессе составления, а я вообще не меняю код.

import { createStore, applyMiddleware,compose } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';

const initialState={};

const middleware = [thunk];

const store = createStore(rootReducer,initialState,
    compose(
        applyMiddleware(...middleware),
        window.__REDUX_DEVTOOLS_EXTENSION__&& window.__REDUX_DEVTOOLS_EXTENSION__()
        )   
    );


export default store;

Я действительно не понимаю, почему это произошло.Я ничего не меняю, и последнее, что я делаю, просто делаю git push origin master в мой репозиторий, и внезапно, когда я скомпилировал, я получил эту ошибку:

Iam Используя это в моем интерфейсе:

  "@material-ui/core": "^3.3.1",
    "@material-ui/icons": "^3.0.1",
    "axios": "^0.18.0",
    "jwt-decode": "^2.2.0",
    "prop-types": "^15.6.2",
    "react": "^16.6.0",
    "react-dom": "^16.6.0",
    "react-redux": "^5.1.0",
    "react-router-dom": "^4.3.1",
    "react-scripts": "2.0.5",
    "react-select": "^2.1.1",
    "recharts": "^1.3.5",
    "redux": "^4.0.1",
    "redux-thunk": "^2.3.0",
    "typeface-roboto": "0.0.54"

Back-end:

 "dependencies": {
    "bcryptjs": "^2.4.3",
    "body-parser": "^1.18.3",
    "express": "^4.16.4",
    "mongoose": "^5.3.11",
    "multer": "^1.4.1",
    "passport": "^0.4.0",
    "passport-jwt": "^4.0.0",
    "path": "^0.12.7",
    "validator": "^10.9.0",
    "xlsx": "^0.14.1"
  },
  "devDependencies": {
    "concurrently": "^4.0.1",
    "nodemon": "^1.18.6",
  },

Ошибка результата:

Image Error 1

Redux:

Image Error 2

Ответы [ 5 ]

0 голосов
/ 04 июня 2019

Лучший способ решить эту проблему в моем случае прост.

Вы знаете, что Cypress открывает Chrome в режиме разработчика, в котором нет ваших расширений, включая redux devtools.

Итак, когда окно с Chrome открывается с ошибкой, нажмите меню> Дополнительные инструменты> Расширения и перейдите в интернет-магазин Chrome, чтобы установить redux devtools .

0 голосов
/ 12 мая 2019

Я добавил в Chrome расширение redux-devtools, и ошибка исчезла, как только я добавил в браузер redux-devtools, и вам также не нужно использовать троичный оператор.

https://github.com/reduxjs/redux/issues/2359#issuecomment-362340634

0 голосов
/ 28 ноября 2018

Обновите ваши инструменты redux dev с 2.16.0 до 2.16.1

ИЛИ

Удалите эту строку из своего кода

window.__REDUX_DEVTOOLS_EXTENSION__&& window.__REDUX_DEVTOOLS_EXTENSION__()
0 голосов
/ 27 апреля 2019

У меня была такая же проблема, когда я хотел протестировать свое веб-приложение в окне инкогнито (расширения не отображаются в окнах инкогнито).

Проблема в том, что compose из redux ожидает, что все его аргументы будут функциями.Поэтому, когда

window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() 

оценивается в этой среде, возвращается логическое значение.

Как упоминалось @knutwalker.Вам нужно вернуть функцию, которая ничего не возвращает.Это исправило это для меня,

      window.__REDUX_DEVTOOLS_EXTENSION__
        ? window.__REDUX_DEVTOOLS_EXTENSION__()
        : f => f
0 голосов
/ 28 ноября 2018

Последний стек показывает вызов для компоновки в client/src/store.js:9, где второй аргумент - window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__().

Однако, если у вас отключен devtools, __REDUX_DEVTOOLS_EXTENSION__ не определен и становится вторым аргументом для компоновки.функция.Это все еще явно предоставлено, что отличается от того, что оно неявно не определено пропуском, поэтому реализация compose думает, что есть два допустимых аргумента, и ожидает, что они будут функциями, а не неопределенными.

Вы должны вернуть фиктивную функциюв случае, если нет доступных devtools, что-то вроде возможно, хотя я не совсем уверен, какой должна быть точная подпись, чтобы удовлетворить функцию createStore.

window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : (a) -> a

...