似乎 path.insertAfter()、path.insertBefore()、path.unshiftContainer() 和 path.pushContainer() 只能与语句一起使用。如何插入不是语句的节点?
就我而言,我正在编写一个 babel jsx 插件,并且尝试插入一个同级节点,它是一个 JSXExpressionContainer。当我这样做时,我收到以下错误:
TypeError:BlockStatement 的属性 body[0] 期望节点的类型为 ["Statement"],但却得到了“JSXExpressionContainer”
如何解决这个问题?
最佳答案
来自文档here :
FunctionDeclaration(path) {
path.insertBefore(t.expressionStatement(t.stringLiteral("Because I'm easy come, easy go.")));
path.insertAfter(t.expressionStatement(t.stringLiteral("A little high, little low.")));
}
查看您的错误,确保您的类型正确。只需检查 babel 类型 here并查看每种类型需要哪些参数。
关于javascript - 通天插件 : How to insert a sibling node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55131970/