«Нарушение инварианта: не удалось найти хранилище», даже если root содержит <Provider> - PullRequest
0 голосов
/ 26 апреля 2018

Я получаю эту ошибку, когда запускаю npm test из своего приложения реагирования, и я не уверен, как ее исправить.Он говорит мне:

Либо оберните корневой компонент в <Provider>, либо явно передайте «store» как реквизит «Connect (App)»

И мой корневой файл уже обернут в провайдера:

import React from "react";
import ReactDOM from "react-dom";

import { Provider } from "react-redux";
import { createStore, applyMiddleware } from "redux";
import reduxThunk from "redux-thunk";

import App from "./App";
import reducers from "./reducers";

const store = createStore(reducers, {}, applyMiddleware(reduxThunk));

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.querySelector("#root")
);

В моем файле App.js у меня есть это:

import React, { Component } from "react";
import { BrowserRouter, Route } from "react-router-dom";
import { connect } from "react-redux";
import * as actions from "./actions";

import LoginPage from "./components/auth/LoginPage";
import Signup from "./components/auth/Signup";
import Header from "./components/header/Header";
import HomePage from "./components/home/HomePage";

class App extends Component {
  componentDidMount() {
    this.props.fetchUser();
  }

  render() {
    return (
      <div>
        <BrowserRouter>
          <div>
            <Header />
            <Route path="/" exact component={HomePage} />
            <Route path="/login" component={LoginPage} />
            <Route path="/signup" component={Signup} />
          </div>
        </BrowserRouter>
      </div>
    );
  }
}

export default connect(null, actions)(App);

Ошибка:

npm test

> my-app@0.1.0 test /var/jenkins_home/workspace/...
> react-scripts test --env=jsdom

 FAIL  src/App.test.js
  ● renders without crashing

Invariant Violation: Could not find "store" in either the context or props of "Connect(App)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(App)".

Мой App.test.js файл:

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";

it("renders without crashing", () => {
  const div = document.createElement("div");
  ReactDOM.render(<App />, div);
});

Когда я запускаю это приложение локально, используя npm start, никаких ошибок не возникает, и избыточность работает нормально.Что происходит?

Примечание: npm test запускается внутри моего конвейера серверов Jenkins / BlueOcean на случай, если что-то изменится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...