JS报Identifier directly after number错误 Material UI调色板500_*色值引用编译失败如何修复
问题原因
报错的核心原因是你使用的500_*格式的键在直接写入方括号时,当前项目的JS编译环境不识别ES2021引入的数字分隔符语法:
- 解析器会把
500识别为数字,后面的_56识别为非法的尾随标识符,直接抛出语法错误 - 你朋友的设备可以正常运行,是因为他的编译环境默认支持ES2021语法,但这里有个隐形坑:如果开启数字分隔符支持,
500_56会被解析为数字50056,而你对象中定义的键实际是字符串'500_56',二者本质不匹配,即使运行正常也存在隐患。
修复方案
方案1(最稳妥,优先推荐)
把所有引用500_*键的位置改为字符串形式,用单/双引号包裹键名,完全规避语法和键匹配问题:
// 修改前 borderBottomColor: theme.palette.grey[500_56] // 修改后 borderBottomColor: theme.palette.grey['500_56']
改完所有引用位置后即可正常编译,也不会存在后续兼容性问题。
方案2(适配编译环境)
给你的项目添加ES2021数字分隔符的转译支持:
- 如果使用Babel编译,安装对应插件:
然后在npm install @babel/plugin-proposal-numeric-separator --save-devbabel.config.json或.babelrc的plugins配置中新增:{ "plugins": ["@babel/plugin-proposal-numeric-separator"] } - 如果使用create-react-app脚手架,升级到v4.0及以上版本即可默认支持该语法。
注意:使用该方案后建议同步把Palette.js中的键定义为数字格式,避免字符串键和数字键不匹配的问题,整体操作成本比方案1高。
内容的提问来源于stack exchange,提问作者memelord9001
相关产品推荐
相关产品推荐

