为什么在使用create-react-app将react-router-dom添加到react应用程序时,开玩笑的测试会中断

时间:2019-06-07 21:19:31

标签: reactjs jestjs create-react-app react-router-dom react-testing-library

我正在运行带有react-16.8.6的create-react-app,除了将react-router添加到混合中之外,没有任何修改。现在测试不起作用。

回滚之后,我发现只要导入“ react-router-dom”库的任何部分,基本测试就会失败。任何想法出什么事了吗?

当我注释掉该行时,下面是App.js和App.test.js:

import { Switch } from "react-router-dom";

测试运行没有问题。当我将行返回到代码时,出现以下错误:

测试套件无法运行

  

无法从'react-router-dom.js'中找到模块'react'

但是,Jest能够找到:

'./App.css'
'./App.js'
'./App.test.js'

App.js

import React from "react";
import { Switch } from "react-router-dom";
import logo from "./logo.svg";
import "./App.css";

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default 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);
  ReactDOM.unmountComponentAtNode(div);
});

1 个答案:

答案 0 :(得分:1)

这可能是某些程序包管理器安装问题。尝试重新安装:

rm -rf ./node_modules && rm yarn.lock && yarn

,或者如果您使用的是 npm

rm -rf ./node_modules && rm package-json.lock && npm install

顺便说一句,您要安装的react-router-dom是什么版本?我刚刚在新的create-react-app项目上尝试过,安装了最新版本的路由器,但无法重现此错误(enter image description here