如何为SWC插件编写JSX验证测试?
解决SWC插件JSX测试中"Expression expected"错误的方案
问题根源
test!宏默认使用的解析器配置未启用JSX语法支持,导致解析<main></main>这类JSX代码时,无法识别其为合法表达式,从而抛出错误。
解决方案
显式配置解析器的JSX支持,替换默认的Default::default()配置:
use swc_core::ecma::parser::ParserConfig; test!( ParserConfig { jsx: true, ..Default::default() }, |_| as_folder(TransformVisitor), boo, r#"<main></main>"#, r#"<main></main>"# );
额外检查
如果插件本身需要处理JSX,需确保Cargo.toml中swc_core依赖开启了JSX相关特性:
[dependencies] swc_core = { version = "0.75", features = ["ecma_parser_jsx"] }
原理说明
SWC默认解析器仅支持标准ECMAScript语法,JSX属于扩展语法,必须通过ParserConfig中的jsx: true选项显式启用,解析器才能正确识别JSX元素为合法表达式节点,通过测试。
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

