我正在尝试用 Acorn 解析旧的 React 组件源代码。
要解析的组件(ProjectNew2.js):
import React from 'react';
class ProjectNew extends React.Component {
componentDidMount = () => {
// do some stuff here...
}
render() {
return (
<div>fooo</div>
);
}
}
export default connect(mapStateToProps)(ProjectNew);
任何我的 JavaScript 代码:
#!/usr/bin/env node
const Fs = require('fs')
const acorn = require("acorn")
const jsx = require("acorn-jsx")
let fileName = "./ProjectNew2.js";
let cnt = Fs.readFileSync(fileName).toString()
let s = acorn.Parser.extend(jsx()).parse(cnt, {ecmaVersion: "latest", sourceType: "module"});
console.log(s)
和例外:
SyntaxError:意外的令牌 (21:22)
问题:为什么 Acorn 在解析箭头函数时会抛出异常?
当我将解析更改为:
componentDidMount(){
// do some stuff here...
}
Acorn 成功解析它。