Плагин Babel: Как вставить одноуровневый узел
Похоже, что path.insertAfter(), path.insertBefore(), path.unshiftContainer() и path.pushContainer() работают только с утверждениями. Как вы вставляете узлы, которые не являются утверждениями?
В моем случае я пишу плагин Ba bel JSX, и я пытаюсь вставить узел-брат, который является JSXExpressionContainer. Когда я делаю это, я получаю следующую ошибку:
TypeError: Property body[0] of BlockStatement expected node to be of a type ["Statement"] but instead got "JSXExpressionContainer"
Как это исправить?
1 ответ
Из документации здесь:
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 и посмотрите, какие параметры необходимы для каждого типа.
Я нашел обходной путь, просто нажав код в виде открытого текста. Реакт, кажется, работает просто отлично.
path.node.children.push('<div>Click me</div>')