You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React应用报错:experimental syntax 'optionalChainingAssign'未启用求解决

解决React中"Support for the experimental syntax 'optionalChainingAssign' isn't currently enabled"错误

错误原因

你使用了可选链赋值(如obj?.property = value)这种ECMAScript实验性语法,但当前Babel配置未启用对该语法的支持。同时项目中自定义的.babelrc可能覆盖了react-scripts 5.0.1的默认Babel配置,导致缺失必要的转译插件。

解决方案

方案1:无需eject,用react-app-rewired扩展配置

  1. 安装依赖:
npm install --save-dev react-app-rewired customize-cra @babel/plugin-proposal-optional-chaining-assign
  1. 在项目根目录新建config-overrides.js文件,写入:
const { override, addBabelPlugin } = require('customize-cra');

module.exports = override(
  addBabelPlugin('@babel/plugin-proposal-optional-chaining-assign')
);
  1. 修改package.json中的scripts命令:
"scripts": {
  "start": "react-app-rewired start",
  "build": "react-app-rewired build && build-script.bat",
  "test": "react-app-rewired test",
  "eject": "react-scripts eject"
}

方案2:修改Babel配置(适用于已eject或允许自定义.babelrc的场景)

  1. 安装必要插件:
npm install --save-dev @babel/plugin-proposal-optional-chaining-assign
  1. 更新你的.babelrc配置,添加插件:
{
  "presets": ["@babel/preset-env", "@babel/preset-react"],
  "plugins": ["@babel/plugin-proposal-optional-chaining-assign"]
}

方案3:移除实验性语法(快速临时解决)

如果代码中是误写了可选链赋值,直接替换为常规的条件赋值即可:

// 原错误写法
obj?.prop = 123;

// 替换为
if (obj) {
  obj.prop = 123;
}

内容的提问来源于stack exchange,提问作者Akash Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:53:19