在functionExpression的blockStatement中包含memberExpression时,错误memberExpression期望类型Identifier,为null,

时间:2017-09-20 20:54:07

标签: babeljs babel

我在编写一个转换器时遇到了奇怪的行为,我在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             ) 

这可能是什么问题?

1 个答案:

答案 0 :(得分:0)

问题在于访问者正在重新审视树的这一部分。如果您要添加节点并且不希望它被访问,那么您必须创建一个弱集合使用,以避免遍历您创建的节点