• 技术文章 >web前端 >前端问答

    react启动项目报错怎么办

    藏色散人藏色散人2022-12-27 10:36:08原创127

    react启动项目报错的解决办法:1、进入项目文件夹,启动项目并查看报错信息;2、执行“npm install”或“npm install react-scripts”命令;3、执行“npm install @ant-design/pro-field --save”命令。

    一、预备知识:

    npm (也可以用yarn,本文以npm为例)

    npm介绍

    npm命令

    注释:

    install可以简写为 i,[]表示可选,<>表示必选

    <name> :包(插件库)名

    [ -g ]:全局安装。 将会安装在C:\ Users \ Administrator \ AppData \ Roaming \ npm,并且写入系统环境变量;全局安装可以通过命令行,在任何地方调用;

    非全局安装:将会安装在当前定位目录;,本地安装将安装在定位目录的node_modules 文件夹下,通过要求调用;

    [ --save-dev]:写入package.jsondependencies需要发布到生产环境,比如react, vue全家桶,ele-ui等ui框架,这些项目运行时必须使用的插件,需要放到 dependencies。

    791bc31968200cb227f96a450f26125.jpg

    3a3e961b40ce70d76cfa1e942b968a5.jpg

    cnpm

    二、创建项目步骤:

    1.全局安装: npm install -g create-react-app

    2.切换到想创建项目的目录后,新建脚手架(hello-react):create-react-app hello-react

    3.进入项目文件夹:cd hello-react

    4.启动项目:npm start

    注释:

    ①项目正常启动成功后,浏览器会出现以下页面

    576564b645ba42b6258a5c2c4c4bc22.jpg

    ②用vscode打开项目文件夹可以看的有以下文件:

    如果需要暴露webpacke配置(创建完项目后不要做任何操作),直接执行以下代码:(此操作不可逆!)

    npm run eject

    然后输入y ,可以看见多了俩个文件夹:

    暴露文件的作用:比如按需引入antd+自定主题

    ④安装好脚手架后,可直接引入以下包

    //引入react核心组件主库
    import React, { Component } from 'react'
    //引入ReactDOM 子库
    import ReactDOM from 'react-dom'

    三、启动项目时可能出现的报错:

    1. 'react-app-rewired' 不是内部或外部命令,也不是可运行的程序或批处理文件。

    原因:可能是由于create-react-app出现丢包缺陷,手动安装包后,需要重新安装,这样node_modules/.bin/目录下才会重新出现react-scripts的文件,从而解决问题。

    解决:npm install 或 npm install react-scripts

    (若因为某些原因导致包出故障,就删除node_modules文件夹,重新npm install )

    2.

    ./src/App.jsx

    Module not found: Can't resolve '@ant-design/icons' in 'C:\Users\...

    原因:没有安装@ant-design/pro-field

    解决:npm install @ant-design/pro-field --save

    四、Todolist项目相关库:

    npm i prop-types
    //对接收的props进行:类型、必要性的限制
    import PropTypes from 'prop-types'
    npm i nanoid
    //生成唯一标识 一般用来充当id或遍历时的index
    import {nanoid} from 'nanoid'
    id:nanoid()

    五、GitHub搜索案例相关库:

    npm install pubsub-js --save
    //消息订阅-发布机制
    import PubSub from 'pubsub-js'
    npm install axios
    //轻量级ajax请求库
    import axios from 'axios'

    六、尚硅谷路由案例相关库:

    npm install --save react-router-dom
    //路由库,前端路由:value是component,用于展示页面内容;
    //      后端路由:value是function, 用来处理客户端提交的请求。
    import {BrowserRouter,HashRouter,NavLink,Link,Route} from 'react-router-dom'
    // V5及之前的版本才有以下三个
    import {Switch,Redirect,withRouter} from 'react-router-dom' 
    // Switch:懒惰匹配  Redirect:重定向  withRouter:让一般组件具备路由组件所特有的API
     
    npm i -save-dev query-string
    // 对http请求所带的数据进行解析
    import qs from 'querystring'  import qs from 'qs'
    // qs.parse() 将字符串解析为对象
    // qs.stringify() //将对象解析为字符串(urlencoded编码)

    七、UI库案例相关库:

    //开源React UI组件库
    npm i antd
    // 主库
    import { Button,DatePicker } from 'antd';
    // 子库 图标等
    import {WechatOutlined,WeiboOutlined,SearchOutlined} from '@ant-design/icons'
    // const 要写在 import后面
    const { RangePicker } = DatePicker;
    //按需引入 自定义主题步骤:
    //1.安装依赖
    yarn add react-app-rewired customize-cra babel-plugin-import less less-loader
    //2.修改package.json
    						"scripts": {
    							"start": "react-app-rewired start",
    							"build": "react-app-rewired build",
    							"test": "react-app-rewired test",
    							"eject": "react-scripts eject"
    						},
     
    //3.根目录下创建config-overrides.js
    					const { override, fixBabelImports,addLessLoader} = require('customize-cra');
    					module.exports = override(
    						fixBabelImports('import', {
    							libraryName: 'antd',
    							libraryDirectory: 'es',
    							style: true,
    						}),
    						addLessLoader({
    							lessOptions:{
    								javascriptEnabled: true,
    								modifyVars: { '@primary-color': 'green' },
    							}
    						}),
    					);

    八、redux相关库:

    // 一、基本redux  componnet==>一般组件Count  redux文件==>action、reducer、store.js
    npm i redux
     
    // redux异步action
    npm i redux-thunk
     
    // redux中,最为核心的store对象将state、action、reducer联系在一起的对象
    // 1.建立store.js文,引入createStore,专门用于创建store对象
    //    引入redux-thunk,applyMiddleware,用于支持异步action
    import {createStore,applyMiddleware} from 'redux'
    import thunk from 'redux-thunk'
     
    // 2.引入为Count组件服务的reducer
    import countReducer from './count_reducer'
     
    // 3. 语法:const store = createStore(reducer)
    // store.js文件中一般如下:
    export default createStore(countReducer,applyMiddleware(thunk))
     
    // 4.store对象的功能
    1)store.getState(): 得到state
    2)store.dispatch({type:'INCREMENT', number}): 分发action, 触发reducer调用, 产生新的state
    3)store.subscribe(render): 注册监听, 当产生了新的state时, 自动调用
    // 二、react-redux  容器组件[UI(同名)组件] : UI组件==>一般组件  containers组件==>外壳
    npm i react-redux
    
    //容器组件中,引入connect用于连接UI组件与redux
    // Provider让多个组件都可以得到store中state数据
    import {connect,Provider} from 'react-redux'
    //定义UI组件
    class CountUI extends Component{...}
    // 使用connect()()创建并暴露一个Count的容器组件
    export default connect(mapStateToProps,mapDispatchToProps)(CountUI)
    <Count store={store} />
    // 给容器组件传递store 连接外部的redux; connect()()用于连接内部的内部的UI组件
     
    // 数据共享
     
    // store.js汇总所有的reducer变为一个总的reducer
    import {combineReducers} from 'redux'
    const allReducer = combineReducers({
    	he:countReducer,
    	rens:personReducer
    })
    // containers组件中:
    connect(
    	state => ({key:value}), //映射状态 mapStateToProps
               {key:xxxAction} //映射操作状态的方法 mapDispatchToProps
            )(UI组件)
     
     
    // redux开发者工具 chrome网上商店中搜索安装 Redux Devtools 工具
    npm i redux-devtools-extension
     
    import {composeWithDevTools} from 'redux-devtools-extension'
    export default createStore(reducer,composeWithDevTools(applyMiddleware(thunk)))

    推荐学习:《react视频教程

    以上就是react启动项目报错怎么办的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:项目 React
    上一篇:react怎么实现浮动菜单 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • react native 删除线怎么设置• react怎么实现列表排序• react 卡住动不了怎么办• react怎么实现浮动菜单
    1/1

    PHP中文网