Я хотел бы добавить инструкцию перед каждым определением функции, например.Пройдите вновь замененный узел с помощью babel
function a() {
var b = function c() {};
}
становится
foo(function a() {
var b = foo(function c() {});
});
Я пытаюсь добиться этого с Вавилонской со следующим посетителем:
var findFunctionVisitor = {
Function: function (path) {
// Traversing further leads to infinite loop as same node is found again
path.stop();
var node = path.node;
// Move every FunctionDeclaration to FunctionExpression
var newNode = t.functionExpression(
node.id,
node.params,
node.body,
node.generator,
node.async
);
path.replaceWith(
t.CallExpression(instrumentationCall, [newNode])
)
// traverse the part in newNode.body
}
};
Если я не остановить путь вновь вставленный ВыражениеФункции найден другой время, которое приводит к бесконечной рекурсии, поэтому остановка необходима. Моя конкретная проблема заключается в том, что я не знаю, как начать обход newNode.body
, и мне нужно будет получить инструкции внутренней функции.