Я отключил инструменты разработки реагирования и инструменты разработки redux.
Я часами искал способы справиться с этой проблемой, и большинство проблем уже в компоновке, а я вообще не меняю код.
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 в свой репозиторий, и внезапно, когда я скомпилировал, я получил эту ошибку:
Я использую это в моем интерфейсе:
"@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"
Бэкэнд:
"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",
},
Ошибка результата:
Redux:



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Последний стек показывает вызов compose в client/src/store.js:9, где вторым аргументом является window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__().
Однако, если у вас отключены инструменты разработчика, __REDUX_DEVTOOLS_EXTENSION__ не определен и становится вторым аргументом для создания функции. Он по-прежнему предоставляется явно, что отличается от того, что он неявно не определен по пропуску, поэтому реализация compose считает, что есть два действительных аргумента, и ожидает, что они будут функциями, а не неопределенными.
Вы должны вернуть фиктивную функцию в случае, если нет доступных инструментов разработчика, что-то вроде «возможно», хотя я не совсем уверен, какой должна быть точная подпись, чтобы удовлетворить функцию createStore.
window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : (a) -> a
Обновите инструменты redux dev с 2.16.0 до 2.16.1
ИЛИ
Удалите эту строку из своего кода
window.__REDUX_DEVTOOLS_EXTENSION__&& window.__REDUX_DEVTOOLS_EXTENSION__()
Почему это произошло?
Была проблема с новым выпуском v2.16.0 redux-devtools-extension. Но теперь исправим в v2.16.1
У меня была такая же проблема, когда я хотел протестировать свое веб-приложение в окне инкогнито (расширения не отображаются в окнах в режиме инкогнито).
Проблема в том, что compose от redux ожидает, что все его аргументы будут функциями. Так когда
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
оценивается в этой среде, он возвращает логическое значение.
Как упоминал @knutwalker. Вам нужно будет вернуть функцию, которая ничего не возвращает. Это исправило это для меня,
window.__REDUX_DEVTOOLS_EXTENSION__
? window.__REDUX_DEVTOOLS_EXTENSION__()
: f => f
работал у меня. В моем случае приложение вылетало, когда я открывал localhost в браузере Opera (где я не установил redux devtools). В хроме он работал нормально, так как у меня есть расширение. Спасибо!
Что касается меня, я добавил расширение redux-devtools в Chrome, и ошибка исчезла, как только я добавил в браузер redux-devtools, и вам также не нужно использовать тернарный оператор.
https://github.com/reduxjs/redux/issues/2359#issuecomment-362340634
В моем случае лучший способ решить эту проблему - просто.
Вы знаете, что кипарис открывает хром в режиме разработчика, в котором нет ваших расширений, включая redux devtools.
Итак, когда окно на Chrome открывается с ошибкой, нажмите меню> дополнительные инструменты> Расширения и перейдите в интернет-магазин Chrome из, чтобы установить redux devtools.
Причина этой ошибки в самом вопросе. Просто включить расширение React и Redux DevTools. Это сработало для меня из-за той же ошибки.
Убедитесь, что у вас есть скачано расширение redux-devtools для Chrome, и измените доступ к сайту на На всех сайтах или по конкретным, перейдя в Управление расширением> Redux DevTools (подробности)> Доступ к сайту
Это случилось со мной с версией 2.17.0 Redux DevTools.
Что-то испортилось в расширении.
Я просто удалил расширение из Chome, переустановил его, и оно отлично заработало.
Эта ошибка возникает из-за:
const store=createStore(rootreducer,
initialstate,
compose(applyMiddleware(...middleware),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())
)
При развертывании проекта вы этого не сделали:
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
Во время выполнения команды npm run build убедитесь, что вы удалили это.
Правильный способ:
const store=createStore(rootreducer,
initialstate,
compose(applyMiddleware(...middleware))
)
Я столкнулся с аналогичной проблемой, и удаление этих строк помогло,
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
но это не постоянное решение, так как для повторного использования инструментов redux dev вам понадобятся эти строки. Вместо этого используйте
process.env.NODE_ENV== = "development" ?
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() : compose,
он использует переменные env, чтобы проверить погоду, использовать ли промежуточное ПО инструментов Reduxdev или нет. так как я не видел этого решения в этой теме, я опубликовал его, надеюсь, что оно будет кому-то полезно ..
Я изменился
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
к этому:
typeof window.__REDUX_DEVTOOLS_EXTENSION__ === "undefined"
? a => a
: window.__REDUX_DEVTOOLS_EXTENSION__ &&
window.__REDUX_DEVTOOLS_EXTENSION__()
и проблема была решена
Это сработало для меня:
Эта ошибка возникает из-за:
const store=createStore(rootreducer,
initialstate,
compose(applyMiddleware(...middleware),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())
)
При развертывании проекта удалите последнюю строку следующим образом:
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
При выполнении команды npm run build убедитесь, что вы удалили это. Правильный способ:
const store=createStore(rootreducer,
initialstate,
compose(applyMiddleware(...middleware))
)
Была такая же ошибка в окне Chrome в режиме инкогнито. Поменял на нормальный Chrome, и все заработало.
Это полный отвечать @Koop, который мне подходит:
Для всех, кто столкнулся с ошибкой TypeError: невозможно прочитать свойство «apply» of undefined »в node_modules / redux / es / redux.js: error: Немедленное исправление: установите расширение Chrome Redux Devtools. Постоянное исправление для всех браузеров:
import { applyMiddleware, createStore, } from ‘redux’;
import createSagaMiddleware from ‘redux-saga’;
import rootReducer from ‘./reducers/index’;
import rootSaga from ‘./sagas/index’;
import { composeWithDevTools } from ‘redux-devtools-extension’;
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
rootReducer,
composeWithDevTools(applyMiddleware(sagaMiddleware))
);
sagaMiddleware.run(rootSaga);
export default store;
В моем случае эта ошибка вызывала пустой / белый экран в производственной сборке в мобильном браузере, но не в браузере настольного компьютера. Принятый ответ не сработал для меня, мне пришлось удалить строку, добавить расширение devtools и выполнить рефакторинг для использования импорта composeWithDevTools. То есть ответ от @Roman был для меня полностью рабочим решением (спасибо, сэр). Но это может помочь другим пояснить, что проблема может возникать независимо от саги о сокращении. Мое приложение просто использовало базовый redux-thunk. Я установил redux-devtools-extension в качестве зависимости разработчика, а затем заменил это:
import { createStore, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
const initialState = {};
const middleware = [thunk];
if (nodeEnv !== 'production') {
const store = createStore(rootReducer, initialState, compose(applyMiddleware(...middleware)));
} else {
const store = createStore(
rootReducer,
initialState,
compose(
applyMiddleware(...middleware),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
),
);
}
export default store;
с этим:
import { createStore, applyMiddleware } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
const initialState = {};
const middleware = [thunk];
const store = createStore(
rootReducer,
initialState,
composeWithDevTools(applyMiddleware(...middleware))
);
export default store;
И это исправило это.
изменение этой строки
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
к
window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : f => f
решит проблему, и это сработало для меня.
Перед ошибкой:
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;
После удаления ошибки:
В Store.js мы должны удалить
window.REDUX_DEVTOOLS_EXTENSION && window.REDUX_DEVTOOLS_EXTENSION()
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)
));
export default store;
Я отключил React devtools и redux devtools, и результаты все те же