问题标签 [esprima]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 找不到模块“esprima”
我正在尝试用 JavaScript 开发一个抽象语法树程序。我正在使用 Jet brains IDE 进行开发。当我运行程序时,我收到错误Cannot find module esprima。nodejs 的设置是完美的,我认为它没有任何问题。请在下面找到代码片段。在一篇文章中,我看到 esprima 模块存在于 nodejs 中。请帮忙。谢谢你。
javascript - ES6 模块导出默认语法
我正在使用带有esnext: true
选项的 es6-module-transpiler、esprima 和 JSHint。JSHint 在我输入时抱怨:
但是当我使用 esprima 时会抱怨
规范说_
export default AssignmentExpression ;
这让我认为 JSHint 需要更新,而 esprima 正在正常轰炸,因为没有分配。有人可以在这里为我做决定吗?
javascript - 用 JavaScript (Esprima.JS) 开发一个解析器,以 Mozilla AST 格式解析 Haskell 语言
目前我正在开发一个解析 Haskell 语言的 JavaScript 解析器。我正在研究 Esprima.JS 并希望在它之上构建将解析 Haskell 语言。根据我的理解,我需要从一个基本部分开始,比如数字(它们在 Haskell 语言中的使用方式)运算符,然后是高级选项。我对它非常陌生,任何有关资源的帮助都对我有用
我正在遵循 Esprima.js 的这种模式
我应该遵循这个过程还是改进其他事情。如果我想在 Esprima.js 上构建(http://esprima.org/),流程是否相同。Esprima.js 比 acorn.js 更容易理解(虽然代码行更少,速度也更快)。我想将 Haskell 解析为 Mozilla AST 格式。任何帮助将不胜感激。
javascript - 来自外部文件、程序的 Javascript 对象
我对 JavaScript 的对象系统感到很困惑。我知道在 JavaScript 中一切都被视为对象,但在 Esprima 的这段代码中,我没有看到任何声明声明这个项目可以使用 esrpima 访问,如下行:( https://github.com/ariya/esprima/ blob/master/esprima.js)
我的问题是如何以及在何处定义类似esprima.parse(text)
Javascript 的内容,以便可以将其导出为外部包并使用对象名称进行访问。我知道如何定义像 Object = {a: "B"}; 这样的对象 但找不到解决办法。请帮我!
javascript - 如何检测分号是否用于终止由 Esprima 生成的 Mozilla Parser AST 中的表达式?
开发人员创建了一个非常简单的程序:
我想确保开发人员使用分号,因为我不相信所有开发人员都知道所有ASI规则。由于我将添加其他代码质量检查,因此我想使用Esprima生成要检查的代码的AST 。当使用Esprima 在线解析器解析上面的简单程序时(选中“基于行和列”选项),将创建以下结构:
我应该如何检查是否使用了分号?我可以推断出一个可能没有在第二行使用,因为VariableDeclaration
AST 中的第二个显示它结束于{line: 3, column: 0}
如下所示。
这是使用 Esprima 的其他工具的方式吗?检查\r\n
vs\n
行尾呢?Esprima 不适合这项任务吗?
编辑
与我分享这个问题的一位同事告诉我,我“可能需要解析树”,这样我就可以获得令牌列表。所以这解决了我的部分问题。以下是 Esprima 提供的代币:
现在我需要弄清楚如何将此标记列表与 AST 结合使用,以告诉我应该在第 2 行使用分号。
javascript - 重构 Javascript 对象和属性
我有一些代码我可能想多次重构。想象一下,像这样:
所以,我想要一个系统来生成某种数据结构,我可以在其中知道我有哪些命名空间/对象以及它们的方法,所以我可以决定是否要将“changeType”函数名称更改为“setNewType ",我知道仅仅替换原型的“changeType”属性是不够的,还需要 object1 调用该函数,因为它是一个 CustomObject。
所以,我一直在尝试不同的选择。
起初我尝试掌握:
http://graspjs.com/docs/equery/
但是我找不到检测元素范围的方法,我认为这是不可能的。
然后我想到使用 esprima 来创建我的代码的 AST,并可能从那里获取允许我识别对象范围的结构,但我也找不到这样做的方法。
我想这一定是可能的,但也许我正在尝试错误的方式。我知道这也是一项艰巨的任务,所以我当然不是要求有人来解决这个问题,但是任何指向正确方向的提示都会非常有帮助。
谢谢。
javascript - 在 Ubuntu 64 位上安装 js-yaml NPM 包依赖项时遇到问题
我正在尝试在 OSX 上编写自己的项目以在 Ubuntu 上构建。它使用几个 npm 包来构建自己。其中一些依赖于 npm 包 js-yaml,而后者又依赖于一个名为“esprima”的包。一个全新的 Ubuntu 14.04 安装给了我找不到这个包的错误:
module.js:340 抛出错误;^ 错误:在 Function.Module._load (module.js:280:25) 在 Module.require (module.js:364: 17) 在对象的 require (module.js:380:17) 处。(/home/michahell/Documents/projects/pinbored-webkit/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/js/function.js:4:15) 在 Module._compile (module.js :456:26) 在 Object.Module._extensions..js (module.js:474:10) 在 Module.load (module.js:356:32) 在 Function.Module._load (module.js:312:12 ) 在 Module.require (module.js:364:17) npm ERR!奇怪的错误 8 npm WARN 这个失败可能是由于使用了旧的二进制“节点” npm WARN 有关进一步的解释,请阅读 /usr/share/doc/nodejs/README.Debian
输出告诉我它可能与遗留二进制节点有关,但我应该通过符号链接节点指向 nodejs 来解决这个问题,使用这个 SO 帖子: nodejs vs node on ubuntu 12.04
那么,是什么导致 npm / node 无法找到或安装这个包呢?
node.js - Getting "Error: Cannot find module 'esprima'" after updating Meteor to 1.0.2.1
After updating Meteor to version 1.0.2.1 I am getting an error:
This seems like a Node module error, but I know that Meteor uses its own bundled version of Node, so I don't understand why this module would be missing.
Could it be possible that one of my packages is causing this error? Here is the result of meteor list
: