Node 14 LTS环境下optional chaining不生效问题如何解决?
--exec babel-node 含义说明
nodemon 的 --exec 参数用于指定运行代码的执行器,此处配置的作用是:当 ./src 目录下的代码变动触发自动重载时,nodemon 不会直接用系统原生 Node 运行代码,而是先调用 babel-node 工具,将你项目中的 ES6+ 高版本语法实时转译为低版本 Node 可识别的语法后再执行。
可选链语法报错根因
- 你的项目依赖的 Babel 主版本过旧:当前安装的
babel-cli@6.23.0、babel-preset-latest@6.22.0均属于已经停止维护的 Babel 6 版本,而可选链(?.)是 ES2020 才新增的语法,Babel 6 官方从未提供对应转译插件,无法识别该语法就会直接抛出Unexpected token错误。 - 语法转译规则缺失:即便是升级到 Babel 7,也需要单独安装
@babel/plugin-proposal-optional-chaining转译插件,或者使用内置了该规则的@babel/preset-env预设,才能正常处理可选链语法。 - 依赖版本冲突:你的依赖中同时存在 Babel 6 核心包和 Babel 7 生态的
@babel/helper-hoist-variables,版本混用也会导致转译逻辑异常。
修复方案参考
- 卸载所有 Babel 6 相关依赖,统一升级到 Babel 7 生态的对应包:
@babel/cli、@babel/core、@babel/node、@babel/preset-env - 在 Babel 配置文件中添加
@babel/preset-env预设,或是单独安装可选链、空值合并运算符等所需的 ES2020 语法转译插件 - 调整启动脚本,将旧版
babel-node替换为 Babel 7 对应的@babel/node执行
内容的提问来源于stack exchange,提问作者Noob
相关产品推荐
相关产品推荐

