esprima401 Cannot destructure property start of noderange as it is undefined 这个range 有其他办法获取源码吗?
如果您使用的是 Esprima 4.0.1 版本,可能会遇到这个问题。这个问题是由于 Esprima 4.0.1 版本中的某些更改导致的。一种解决方法是升级到 Esprima 4.0.2 或更高版本,这个问题已经得到修复。
另一种解决方法是使用 Esprima 3.x 版本,这个版本没有这个问题。您可以使用以下命令安装 Esprima 3.x 版本:
npm install esprima@3
如果您需要获取源码范围,可以使用 Escodegen 库。Escodegen 可以将抽象语法树(AST)转换为源代码,并为每个节点提供范围信息。您可以使用以下命令安装 Escodegen 库:
npm install escodegen
然后在您的代码中使用以下代码:
const esprima = require('esprima');
const escodegen = require('escodegen');
const code = 'const x = 1;';
const ast = esprima.parse(code, { range: true });
ast.body.forEach(node => {
const range = node.range;
const sourceCode = escodegen.generate(node, { comment: true });
console.log(sourceCode, range);
});
这个示例代码将打印出以下内容:
const x = 1; [ 0, 12 ]
其中 [0, 12] 是节点的范围。
原文地址: https://www.cveoy.top/t/topic/9X9 著作权归作者所有。请勿转载和采集!