【问题标题】:escodegen.generate throws Error: Unknown node type: undefinedescodegen.generate 抛出错误:未知节点类型:未定义
【发布时间】:2019-06-06 18:52:05
【问题描述】:

以下是我自己写的代码

`js
  var esprima = require('esprima');
  var escodegen = require('escodegen');
  var a = "var a = 2";
  var ast = esprima.tokenize(a);
  var output = escodegen.generate(ast);
  console.log(output);
`

我能够对代码字符串进行标记,但在生成代码时出现错误。我经历了多个样本,到处都遵循相同的模式。我不明白我做错了什么。

【问题讨论】:

    标签: node.js esprima escodegen


    【解决方案1】:

    esprima.tokenize 函数不会生成 AST,只是生成一个令牌数组。你要使用的是esprima.parse

    试试这个:

      var esprima = require('esprima');
      var escodegen = require('escodegen');
      var a = "var a = 2";
      var ast = esprima.parse(a);
      var output = escodegen.generate(ast);
      console.log(output);
    

    会有用的

    【讨论】:

    • 谢谢,但它适用于小代码 sn-p。我正在尝试解析一个大型的打字稿代码块,它正在为其抛出“意外的令牌:”错误。
    • 嗯,这是一个不同的问题。我认为 esprima 无法解析打字稿,也许您可​​以在另一个问题中找到一些信息:stackoverflow.com/questions/39917907/typescript-ast-typescript
    • 知道了!感谢您的帮助。
    猜你喜欢
    • 2014-10-06
    • 2012-04-14
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2014-05-30
    相关资源
    最近更新 更多