Javascript Babel插件:如何插入同级节点

Javascript Babel插件:如何插入同级节点,javascript,plugins,babeljs,babel-plugin,babel-babylon,Javascript,Plugins,Babeljs,Babel Plugin,Babel Babylon,似乎path.insertAfter()、path.insertBefore()、path.unshiftContainer()和path.pushContainer()只适用于语句。如何插入不是语句的节点 在我的例子中,我正在编写一个BabelJSX插件,并尝试插入一个同级节点,它是一个JSXExpressionContainer。当我执行此操作时,会出现以下错误: TypeError:BlockStatement的属性体[0]预期节点的类型为[“Statement”],但得到的却是“JSXE

似乎path.insertAfter()、path.insertBefore()、path.unshiftContainer()和path.pushContainer()只适用于语句。如何插入不是语句的节点

在我的例子中,我正在编写一个BabelJSX插件,并尝试插入一个同级节点,它是一个JSXExpressionContainer。当我执行此操作时,会出现以下错误:

TypeError:BlockStatement的属性体[0]预期节点的类型为[“Statement”],但得到的却是“JSXExpressionContainer”


如何修复此问题?

我找到了一个解决方法,只需将代码作为纯文本推送即可。React似乎很管用

path.node.children.push('<div>Click me</div>')
path.node.children.push('Click me')
来自文档:



查看错误,确保正确输入。只需检查babel类型,看看每个类型需要哪些参数。

这不起作用。它给出了与问题中相同的错误。我使用的是Babel7我认为这是您尝试插入的类型的错误,而不是
.insertBefore()
.insertAfter()
函数。试着插入一些简单的东西。我有一个babel项目,我使用了一个节点
.insertAfter()
,它可以工作@我正在尝试插入JSX。
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.")));
}