alibaba / lowcode-engine

An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系
https://lowcode-engine.cn
MIT License
14.51k stars 2.52k forks source link

源码面板 中的 Null 合并操作符 不被编译,导致低版本浏览器报错 #2121

Open vjzning opened 1 year ago

vjzning commented 1 year ago
image

?.操作符被正确编译了。而??不行

LeoYuan commented 1 year ago

image

目前项目配置是 targets: [ { chrome: 80 } ],从 caniuse 能查到 ?. / ?? 在 Chrome 80 应该都是支持的,理论上两者都不应该被编译,没搞明白为啥一个被编译,一个没编译。。。

@alvarto 请承虎大佬释疑,cc @eternalsky

LeoYuan commented 1 year ago

preset-env 中使用了 @babel/plugin-proposal-optional-chaining(打开 env debug: true 模式可见),在 Chrome 91 之下都会将 ?. 转译,假如使用 @babel/plugin-transform-optional-chaining,在 Chrome 80 之下才会转译~ image

目前建议可以将 targets 开放成一个插件变量,按需传入,比如需要支持 ?. / ??,配置 Chrome 79 即可。