为什么在使用 create-react-app 将 react-router-dom 添加到 React 应用程序时,玩笑测试会中断
Why does jest testing break when adding react-router-dom to a react app with create-react-app
我正在 运行使用 react-16.8.6 创建一个 create-react-app,除了添加 react-router 之外没有任何修改。现在测试不起作用。
回滚后,我发现只要导入 "react-router-dom" 库的任何部分,基础测试就会失败。有什么想法出了什么问题吗?
下面是App.js和App.test.js当我注释掉这行时:
import { Switch } from "react-router-dom";
测试 运行 没有问题。当我 return 代码行时,出现以下错误:
测试套件未能 运行
Cannot find module 'react' from 'react-router-dom.js'
但是,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);
});
这可能是一些包管理器安装问题。尝试进行全新安装:
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 项目上尝试过,安装了最新版本的路由器,但无法重现此错误 ()
运行 遇到了同样的问题,我想我可以为 运行 遇到同样问题的人详细说明解决方案。
删除node_modules
和yarn.lock
/package-lock.json
没有解决。相反,正如@Finlish 在上面的评论中提到的,您可能缺少依赖项。
修复缺失的部门:
- 获取 depcheck 包。
- 运行 它在您的项目文件夹中以查看您缺少哪些依赖项。
- 安装缺少的依赖项。
- 运行 再次测试以确保一切正常。
我正在 运行使用 react-16.8.6 创建一个 create-react-app,除了添加 react-router 之外没有任何修改。现在测试不起作用。
回滚后,我发现只要导入 "react-router-dom" 库的任何部分,基础测试就会失败。有什么想法出了什么问题吗?
下面是App.js和App.test.js当我注释掉这行时:
import { Switch } from "react-router-dom";
测试 运行 没有问题。当我 return 代码行时,出现以下错误:
测试套件未能 运行
Cannot find module 'react' from 'react-router-dom.js'
但是,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);
});
这可能是一些包管理器安装问题。尝试进行全新安装:
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 项目上尝试过,安装了最新版本的路由器,但无法重现此错误 (
运行 遇到了同样的问题,我想我可以为 运行 遇到同样问题的人详细说明解决方案。
删除node_modules
和yarn.lock
/package-lock.json
没有解决。相反,正如@Finlish 在上面的评论中提到的,您可能缺少依赖项。
修复缺失的部门:
- 获取 depcheck 包。
- 运行 它在您的项目文件夹中以查看您缺少哪些依赖项。
- 安装缺少的依赖项。
- 运行 再次测试以确保一切正常。