通天塔获取节点的第一个child。遵循访问者模式

Babel js. Get the first child of a node. Following the visitor pattern

我需要获取 "Program" 节点的第一个 child。我正在关注访问者模式。

    let out2 = babel.transform(tc1, { plugins: [
    {
        visitor: {
            Program(path) {
                console.log(path);
                // path.insertBefore(decorators[d]);

            }
        }
    }]});

请注意 decorators[d] 包含一个节点。我试图获得第一个 child 的原因是因为 insertBefore 行似乎不起作用。它抛出这个错误。

TypeError: unknown: Cannot read property 'isExpressionStatement' of null

所以我想尝试执行节点child上的行。


我尝试过的事情:

path.children[0];

path.node.right;

path.traverse({
    Program(p2) {

    }
})

你可以做到

path.get("body.0");

但我用得最多的是这个:

path.traverse(
{
    TypeOfNode(path){ }
})

我也试过插入这个并且成功了:

path.node.body

这是一个节点数组。例如,如果你想在数组之前插入一个节点(使用 javascript unshift 函数)你会这样做:

path.node.body.unshift(node);