由于 React 19 兼容性问题,Create React App 正式弃用

开发 前端
因为 CRA 默认安装 React 的最新可用版本,这也就意味着在 React 19 发布后它会安装 React 19。但是 CRA 的默认模板包括 React Testing Library v13,它需要 React 18,而不是 React 19。

Hello,大家好,我是 Sunday。

前段时间 React 19 正式发布 带来了一系列的新功能。这些新功能大家用起来很爽,但是也带来了一些新的生态问题。其中比较关键的就是 create-react-app(简称 CRA) 不能用啦...

因为 CRA 默认安装 React 的最新可用版本,这也就意味着在 React 19 发布后它会安装 React 19。但是 CRA 的默认模板包括 React Testing Library v13,它需要 React 18,而不是 React 19。

当 npm 检测到这种不匹配时,它会抛出一个错误,导致项目无法正确设置。

针对这个问题,Redux 的作者 Mark Erikson 在最近的 GitHub 问题中详细说明了这种不兼容的问题(https://github.com/facebook/create-react-app/issues/17004):

图片图片

虽然基于此,Mark Erikson 提供了 临时解决方案,但是这并不能解决长期的问题:

图片图片

因此,我们就得出了一个结论 CRA 已经过时了!

CRA 已经过时了

然后 CRA 已经很多年没有人进行维护了

图片图片

但是,从 npm 的下载统计中,依然可以看出它依然是 React 开发者的常用工具

图片图片

同时,在国内的很多教程中,也都是使用 CRA 进行项目构建的。

所以,这样的问题,就必须要提供对应的 解决方案。

而 React 官方团队也给出了对应的解决方案,那就是 弃用...

截图来自 github create-react-app 仓库 README截图来自 github create-react-app 仓库 README

截图来自 github create-react-app 仓库 README

而作为替代,目前更推荐大家使用 vite 来创建 React 项目。

基于 Vite 的迁移方案

  1. 卸载 CRA 依赖
npm uninstall react-scripts
npm install vite @vitejs/plugin-react --save-dev
  1. 调整项目结构

将 index.html 移至项目根目录,并更新脚本引用为 ESM 格式:

<script type="module" src="/src/main.jsx"></script>

将 .js 文件扩展名改为 .jsx(如 App.js → App.jsx)。

  1. 配置 Vite

创建 vite.config.js 文件:

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";

export default defineConfig({
  plugins: [react()],
});
  1. 更新环境变量

环境变量前缀需从 REACT_APP_ 改为 VITE_(如 VITE_API_KEY=123)。

  1. 运行与调试

修改 package.json 脚本命令:

"scripts": {
  "dev": "vite",
  "build": "vite build",
  "preview": "vite preview"
}

责任编辑:武晓燕 来源: 程序员Sunday
相关推荐

2025-02-17 05:00:00

工具项目Cursor

2009-06-04 20:31:05

Eclipse和CDT

2024-12-16 08:40:51

2023-02-02 08:41:14

React团队Vite

2010-09-15 09:21:11

IEirefoxJavascript

2010-11-26 14:21:49

Office 套件

2010-11-30 15:18:32

Office

2011-04-12 16:51:29

Javascript兼容性

2024-12-06 11:22:27

2010-08-23 09:23:48

IEFirefox兼容性

2010-09-15 11:26:05

IE火狐CSS兼容性

2010-08-20 14:27:23

IE火狐CSS

2010-08-17 14:51:05

IE8兼容性

2009-01-20 19:36:48

服务器虚拟化VMware

2010-08-18 09:24:09

IE6兼容性

2009-06-11 14:33:16

Windows 7微软操作系统

2010-10-09 12:58:59

JS脚本兼容

2010-09-15 10:14:19

IE7IE8兼容CSS

2010-09-15 10:39:27

IE8文件兼容性

2010-05-26 16:39:29

点赞
收藏

51CTO技术栈公众号