解决create-react-app .json文件无法正常打包

本文介绍如何解决使用create-react-app创建的React应用中,非public目录下的JSON文件无法被正确打包的问题。通过修改webpack配置,添加特定的loader来处理JSON文件,确保其能在构建后的应用中正确加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题情景

使用create-react-app创建react应用,在除public目录里的.json文件(在public目录里的文件会copy)
src/data/population.json
import './data/population.json'
npm run build之后根本没有这个json。

解决方法

  • 首先npm run reject暴露webpack配置文件
  • config/webpack.config.dev.js, config/webpack.config.prod.js 添加
module: {
 rules: [
   ....
   {
       type: 'javascript/auto', // 敲重点!!!
       test: /\.(json)$/,
       exclude: /node_modules/,
       use: {
         loader: 'file-loader',
         options: {
           name: '[name].[ext]',
         },
       },
   },
   ....
 ]
}

适用于很多不能正常打包的文件,像 |atlas|conf|ani

使用 `npx create-react-app` 和 `cra-template` 模板创建 React 项目是一种快速构建现代前端应用的方式。`create-react-app`(CRA)是一个官方支持的脚手架工具,能够帮助开发者快速搭建 React 开发环境,无需手动配置 Webpack、Babel、ESLint 等工具。 ### 使用指定模板创建 React 项目 可以通过 `--template` 参数指定模板名称,从而使用特定的 `cra-template` 模板来初始化项目。模板可以是官方提供的,也可以是社区或企业自定义的。 #### 基本语法: ```bash npx create-react-app <项目名称> --template <模板名称> ``` - `<项目名称>`:你希望创建的项目文件夹名称。 - `<模板名称>`:模板的名称,如 `typescript`、`redux`、`tailwindcss` 等。 #### 示例:使用 TypeScript 模板创建项目 ```bash npx create-react-app my-ts-app --template typescript ``` 这将创建一个基于 TypeScript 的 React 项目,包含所有必要的配置文件和依赖项。 #### 示例:使用 Redux 模板创建项目 ```bash npx create-react-app my-redux-app --template redux ``` 这将创建一个包含 Redux Toolkit 集成的 React 项目,适合构建状态管理较为复杂的应用。 #### 示例:使用自定义模板创建项目 如果你希望使用社区或企业内部的模板,例如 `cra-template-company`,则可以如下操作: ```bash npx create-react-app my-corporate-app --template company ``` 确保该模板已在 npm 上发布,并命名为 `cra-template-company`。 --- ### 常见问题及解决方法 - **网络超时问题**:如果在创建过程中出现 `ERR_SOCKET_TIMEOUT` 错误,可能是因为 npm 源连接稳定,可以尝试切换 npm 镜像源[^2]: ```bash npm config set registry http://registry.npmjs.org/ ``` - **模块缺失问题**:如果出现类似 `No matching version found for @typescript-eslint/scope-manager` 的错误,可能是依赖版本匹配或网络问题导致安装失败,建议检查网络并尝试重新运行命令[^3]。 - **版本兼容性问题**:如果提示 `You are running create-react-app 4.0.3` 并出现兼容性问题,可能是全局 npm 包版本过高,建议降级 npm 或使用 `npx` 而非全局安装的 `create-react-app`[^5]。 --- ### 安装后步骤 项目创建完成后,进入项目目录并启动开发服务器: ```bash cd my-ts-app npm start ``` 这将自动打开浏览器并加载 React 应用的开发环境。 --- ### 项目结构概览 使用 CRA 创建的项目结构如下: ``` my-ts-app/ ├── node_modules/ ├── public/ │ ├── index.html │ └── favicon.ico ├── src/ │ ├── App.tsx │ ├── index.tsx │ └── ... ├── package.json ├── tsconfig.json (仅 TypeScript 项目) └── ... ``` 其中 `src/` 目录是开发主目录,`public/` 存放静态资源,`package.json` 中包含了项目依赖和脚本。 --- ### 自定义配置(推荐) 默认情况下,CRA 暴露配置文件。如果确实需要修改 Webpack 或 Babel 配置,可以使用 `npm run eject` 命令,但这一步是可逆的。建议优先使用 [craco](https://www.npmjs.com/package/@craco/craco) 或 [react-app-rewired](https://www.npmjs.com/package/react-app-rewired) 等工具进行非破坏性配置覆盖。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值