如果您使用的是 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录