2
바벨 모듈을 가지고 놀려고했는데, babylon
, babel-traverse
입니다. 노드를 교체하려고 시도했을 때 프로그램이 Maximum call stack size exceeded
과 충돌했습니다. 여기 내 코드는바벨, path.replaceWith를 사용하는 동안 최대 호출 스택 크기가 초과되었습니다.
import * as babylon from 'babylon'
import traverse from 'babel-traverse'
import generate from 'babel-generator'
import * as t from 'babel-types'
const code = `
import a from 'b'
n === 3
`
const ast = babylon.parse(code, {
sourceType: 'module'
})
const visitor = {
BinaryExpression(path) {
console.log((path.node))
path.replaceWith(t.binaryExpression('**', t.numericLiteral(3), t.numericLiteral(4)))
}
}
traverse(ast, visitor)
let generated = generate(ast, null, code)
console.log(generated.code)
그리고 나는 아래의 babel 종속성을 사용하고있다. 이진 표현 교체가 다른 바이너리 표현을 생성하기 때문에
"dependencies": {
"babel-generator": "^6.9.0",
"babel-preset-es2015": "^6.9.0",
"babel-traverse": "^6.9.0",
"babel-types": "^6.9.1",
"babylon": "^6.8.0"
}
아직 해결책을 찾지 못한 사람은 아무도 없습니다. –