加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、容器安全、数据加密、云日志、云数据迁移!
当前位置: 首页 > 教程 > 正文

react装饰器报错怎样处理

发布时间:2023-07-08 12:00:17 所属栏目:教程 来源:未知
导读:   这篇文章主要介绍“react装饰器报错如何解决”,在日常操作中,相信很多人在react装饰器报错如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
  这篇文章主要介绍“react装饰器报错如何解决”,在日常操作中,相信很多人在react装饰器报错如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react装饰器报错如何解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
 
  react装饰器报错的解决办法:1、通过“create-react-app mobx-study”创建项目;2、通过“yarn add -D react-app-rewired customize-cra”安装插件;3、修改package.json文件中scripts脚本;4、在项目根目录下创建“config-overrides.js”和“.babelrc”即可。
 
  一、decorators装饰器报错@
 
  在初次使用React 的装饰器时,第一次在项目中使用 @
 
  会报错,原因是react默认是不支持装饰器的,所以才会报错,所以是需要做一些配置来支持装饰器。
 
  【报错显示:Parsing error: This experimental syntax requires enabling one of the following parser plugin(s): “decorators-legacy”, “decorators”.】
 
  react装饰器报错如何解决
 
  1. 创建项目
 
  npm install -g create-react-app  
 
  // 安装create-react-app,已安装请忽略
 
  create-react-app mobx-study
 
  2. 安装插件 —— 改变 create-react-app 中 webpack 配置
 
  yarn add -D react-app-rewired customize-cra
 
  yarn add -D @babel/core @babel/plugin-proposal-decorators @babel/preset-env
 
  3. 修改package.json文件中 scripts 脚本
 
  // package.json
 
  "scripts": {
 
      "start": "react-app-rewired start",
 
      "build": "react-app-rewired build",
 
      "test": "react-app-rewired test",
 
      "eject": "react-scripts eject"
 
    }
 
  4. 在项目根目录下创建 config-overrides.js 并写入以下内容
 
  const path = require('path')
 
  const { override, addDecoratorsLegacy } = require('customize-cra')
 
  function resolve(dir) {
 
      return path.join(__dirname, dir)
 
  }
 
  const customize = () => (config, env) => {
 
      config.resolve.alias['@'] = resolve('src')
 
      if (env === 'production') {
 
          config.externals = {
 
              'react': 'React',
 
              'react-dom': 'ReactDOM'
 
          }
 
      }
 
      return config
 
  };
 
  module.exports = override(addDecoratorsLegacy(), customize())
 
  5. 在项目根目录下创建 .babelrc 并写入以下内容
 
  {
 
      "presets": [
 
          "@babel/preset-env"
 
      ],
 
      "plugins": [
 
          [
 
              "@babel/plugin-proposal-decorators",
 
              {
 
                  "legacy": true
 
              }
 
          ]
 
      ]}
 
  基本完成以上步骤就可以正常使用装饰器了,再也不会报 @ 的错误了。同时Support for the experimental syntax ‘decorators-legacy’ isn’t currently enabled这个错误也将消失。
 
  二、对修饰器的实验支持功能在将来的版本中可能更改。在 “tsconfig” 或 “jsconfig” 中设置 “experimentalDecorators” 选项以删除此警告。ts(1219)
 
  设置 => 搜索experimentalDecorators => 打上勾勾

 

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章