0

我在玩 AST。我现在的目标是为文件中的每个块语句添加一个标识符。但是 ast explorer 抛出了一个我无法破译的错误。

function foo() {
   console.log('bar');
}

改装后

function foo() {
   baz
   console.log('bar');
}

AST

如何使用 jscodeshift 添加这样的东西。

4

1 回答 1

0

有两件事你需要注意

  • 块语句由一组语句组成。您想添加到该数组。
  • 您不能在该数组中插入裸表达式(例如标识符)。您实际上必须创建一个ExpressionStatement.

以下将起作用:

root
  .find(j.BlockStatement)
  .forEach((path) => {
    path.get('body').value.unshift(j.expressionStatement(j.identifier('bar')));
  });
于 2018-07-05T18:27:19.797 回答