const path = require('path')-意外的标识符

时间:2018-10-31 08:40:38

标签: javascript antlr4 node-modules

我遵循了this教程,该教程描述了如何为ANTLR4语法(ECMAScript.g4)创建JavaScript编译器。作为示例,它还描述了如何将某些内容从JavaScript转换为Python。 This is the link到我的项目的仓库中。

但是,当我通过命令提示符运行程序时,出现以下错误:

D:\js-runtime>npm start

> js-runtime@1.0.0 start D:\js-runtime
> node index.js

D:\js-runtime\codegeneration\PythonGenerator.js:123
const path = require('path');
      ^^^^

SyntaxError: Unexpected identifier
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (D:\js-runtime\index.js:4:25)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! js-runtime@1.0.0 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the js-runtime@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\shjslk\AppData\Roaming\npm-cache\_logs\2018-10-31T08_28_59_802Z-debug.log

以下是PythonGenerator.js的相关部分:

const ECMAScriptVisitor = require('../lib/ECMAScriptVisitor').ECMAScriptVisitor;

/**
 * This Visitor walks the tree generated by parsers and produces Python code
 *
 * @returns {object}
 */
class Visitor extends ECMAScriptVisitor {

  // lots of method definitions here

  const path = require('path');
  const {
    SemanticArgumentCountMismatchError
  } = require(path.resolve('error', 'helper'));

  // more methods
}
module.exports = Visitor;

很明显,该错误必须与“路径”节点模块有关。但是我看不出这是怎么回事。可能是什么原因造成的?

2 个答案:

答案 0 :(得分:0)

我通过注释声明并使用PythonGenerator.js文件中的路径Node模块的语句来解决此问题。

但是,我不知道为什么会这样。如果有人知道有效的原因,请将其添加为答案,我将接受它作为该问题的答案

答案 1 :(得分:0)

您不能在JavaScript的类定义主体中放入常量或变量定义。您应该在path类的定义之外定义SemanticArgumentCountMismatchErrorVisitor