Плагин 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>')
Другие вопросы по тегам