我在编写一个转换器时遇到了奇怪的行为,我在blockStatement中提供了一个成员表达式到我的functionExpression,它告诉我:
TypeError: unknown: Property property of MemberExpression expected node to be of a type ["Identifier"] but instead got null
。
但这肯定不是提供给它的 - 我绝对给了它一个标识符:
95 const arguments0 = t.memberExpression(
96 t.identifier('arguments'),
97 t.numericLiteral(0),
98 true
99 )
100 const callEval = t.callExpression(
101 t.identifier('eval'),
102 // [ arguments0 ]
103 [
104 t.memberExpression(
105 t.identifier('arguments'),
106 t.numericLiteral(0),
107 true
108 )
109 ]
110 )
111 const returnCallEval = t.returnStatement(callEval)
112 const captureArg2Block = t.blockStatement([
113 returnCallEval
114 ])
115 const captureArg2 = t.functionExpression(
116 null,
117 [],
118 captureArg2Block
119 )
这可能是什么问题?
答案 0 :(得分:0)
问题在于访问者正在重新审视树的这一部分。如果您要添加节点并且不希望它被访问,那么您必须创建一个弱集合使用,以避免遍历您创建的节点