【发布时间】:2018-12-27 23:56:20
【问题描述】:
我想使用babel-plugin-transform-jsx,但在一些 JSX 文件上没有其他转换,目前在stage 3 考虑使用一些 Javascript,即候选。
如果这些 JSX 文件包含以下内容,则转换失败并出现语法错误:
- 剩余传播运算符
{...x, ...y} - 异步生成器
async function * () {}
目标是提高现代浏览器中代码的调试能力,因为异步生成器的 Babel 转译似乎破坏了 Chrome、Firefox 的开发工具,即断点停止工作,对 this 的引用失败,@ 987654328@ 调用被跳过,以及许多其他观察到的问题。
除了使用 Babel 以上述形式生成 JSX 之外,似乎别无选择——效果很好;一个理想的解决方案是让 Babel 忽略异步生成器和剩余扩展运算符(以及它会引发语法错误的任何其他代码)。
编辑
使用 Victor 建议的插件似乎是正确的解决方案,但在此运行 babel-plugin-syntax-async-generators:
class SearchCriteria {
async * results (authManager) { }
}
导致错误:
Unexpected token, expected "(" (2:10)
1 | class SearchCriteria {
> 2 | *async results(authManager) {
| ^
Reproducible here,当您添加syntax-async-generators 插件时。
【问题讨论】:
标签: javascript babeljs jsx transpiler babel-loader