首页 > 解决方案 > 使用 babel traverse 获取 AST 中的评论

问题描述

我如何遍历评论babelTraverse

babelTraverse(nodes, {
  CommentBlock: (path) => {
    console.log(path)
  },
  CommentLine: (path) => { 
    console.log(path)
  }
})

错误:您为我们提供了节点类型 CommentBlock 的访问者,但它不是有效类型

标签: babeljsbabel-babylon

解决方案


CommentBlockCommentLine不是babel 解析器返回的 的program.body一部分。ast这些注释类型位于程序主体之外。我假设这就是为什么我们在添加CommentLineand时得到类型错误的原因CommentBlock

可以使用 访问节点的注释traverse,如下所示:

traverse(ast, {
  ClassDeclaration(path) {
    console.log(path.node.leadingComments);
    console.log(path.node.trailingComments);
  },
});

推荐阅读