Uncaught TypeError: (0 , _store.configureStore) не является функцией

store.js

import {createStore, applyMiddleware} from 'redux';
import createLogger from 'redux-logger';
import rootReducer from './reducers/index';

const logger = createLogger();

const createStoreWithMiddleware = applyMiddleware(logger)(createStore);

export default function configureStore(initialState) {
  return createStoreWithMiddleware(rootReducer, initialState);
}

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import TrackList from './components/TrackList';
import {configureStore} from './store';
import * as actions from './actions';

const tracks = [
  {
    id: 1,
    title: 'Title 1'
  },
  {
    id: 2,
    title: 'Title 2'
  }
];

const store = configureStore();
store.dispatch(actions.setTracks(tracks));

ReactDOM.render(
  <TrackList />,
  document.getElementById('app')
);

Папка src состоит из index.js и store.js

Показать сообщение Uncaught TypeError: (0 , _store.configureStore) не является функцией, когда F12

Помогите мне спасибо


person Hieu Bui    schedule 18.09.2016    source источник


Ответы (1)


Отредактировано 11 марта 2019 года:

Этот ответ, скорее всего, больше не будет работать. Пожалуйста, смотрите обсуждение в комментариях ниже, почему и каким должно быть фактическое решение.


Вы экспортируете одну функцию из своего модуля, поэтому ваш импорт должен быть:

import configureStore from './store';

Вы бы использовали

import {configureStore} from './store';

если ваш экспорт выглядел как

export default {
  configureStore: function(initialState) {
    return createStoreWithMiddleware(rootReducer, initialState);
  }
}
person Mchl    schedule 18.09.2016
comment
Большое спасибо, я новичок, еще раз спасибо - person Hieu Bui; 18.09.2016
comment
Этот export default {... в конце концов больше не работает. Вы должны экспортировать по имени сейчас, в соответствии со спецификациями. Экспорт должен быть export function configureStore (initialState) {...}. - person DDS; 19.09.2016
comment
@HieuBui Обратите внимание, что это проблема ES6, которая на самом деле не имеет ничего общего с Redux. - person DDS; 19.09.2016
comment
Получение ошибки, когда существует только один экспорт, поэтому именованный экспорт не работает в соответствии с предложением @DDS. - person Jonny; 11.03.2019
comment
У вас может быть один именованный экспорт. Наличие одного экспорта не означает, что это экспорт по умолчанию. - person DDS; 11.03.2019
comment
Этот ответ старый. Это включает в себя использование хака, который не соответствует спецификации. Он также больше не должен работать в большинстве сред. Прочтите где-нибудь об импорте ES6 для получения дополнительной информации о том, как это должно быть сделано. Причина, по которой это вообще сработало, заключается в том, что реализации не всегда соответствовали спецификациям. - person DDS; 11.03.2019